[R] R 리스트 인덱싱 예제 (List indexing in R)

해당 포스트는 R에서 리스트(list) 데이터 다루는 방법에 대해 소개합니다.


R을 배우기 시작하시면서 가장 많이 사용하고 익숙한 자료 구조는 벡터(Vector)데이터 프레임(Data Frame)입니다. 아래에서 소개할 리스트(list)는 입문자 분들에게 낯설 수 있겠지만 R에서 많이 사용되는 자료 구조로 키:값(Key:Value)의 구조를 가지는 유용한 자료 구조입니다.
(타 언어를 배우신 적이 있으시다면 오히려 익숙한 자료 구조일 수도 있습니다.)

네이버 지식인에서 받은 질문 예시를 통해 리스트 다루는 방법을 설명드리겠습니다.

list-indexing-example-in-r
[출처] 네이버 지식인

문제

R프로그래밍 리스트인덱싱 질문이요!

다음과 같은 lst 리스트로부터 [결과]와 같은 벡터를 추출하는 리스트 인덱싱 코드를 작성하시오.

x <- 1:5
lst <- list(x, x*2, x*3)

[결과]
[1]  6  8 10

풀이

1. 리스트 데이터 생성

먼저 문제 풀이에 필요한 리스트 데이터 lst를 생성해 보겠습니다.

  • line 1: 1부터 5까지 들어있는 벡터 x 생성
  • line 2: x, x*2, x*3 계산 결과를 결합하여 리스트 lst 생성
x <- 1:5
lst <- list(x, x*2, x*3)

lst
[[1]]
[1] 1 2 3 4 5

[[2]]
[1]  2  4  6  8 10

[[3]]
[1]  3  6  9 12 15

위 출력 결과를 보시면 첫번째 리스트 [[1]]에는 x의 값이, [[2]]에는 x*2의 값이, [[3]]에는 x*3의 값이 입력된 것을 확인할 수 있습니다.

2. 리스트 내 데이터 접근

리스트 데이터에 접근하기 위해서는 아래와 같은 인덱싱 방법을 사용할 수 있습니다.


첫 번째 리스트 출력

대괄호를 두 번 사용([[1]])해 리스트 번호를 지정하면 됩니다.

대괄호 개수의 차이?
대괄호를 한 번 사용([1])하면 첫 번째 리스트를 불러오는 것이고, 두 번 사용([[1]])하면 첫 번째 리스트의 원소(데이터)들을 불러오는 것입니다. 데이터를 연산하거나 추출하려면 대괄호를 두 번씩 쓰셔야 합니다.

lst[[1]]
[1] 1 2 3 4 5

두 번째 리스트 출력

대괄호를 두 번 사용([[2]])해 리스트 번호를 지정하면 됩니다.

lst[[2]]
[1]  2  4  6  8 10


세 번째 리스트에서 1번째부터 3번째 까지 원소 출력

대괄호를 두 번 사용([[3]])해 리스트 번호를 지정하고, 그 뒤에 추출하려는 데이터의 인덱스 번호를 입력해 주면 됩니다. 사용법은 아래 코드를 참고하시면 됩니다.

lst[[3]][1:3]
[1] 3 6 9

3. 결과 코드

위 문제에서 제시된 결과(6, 8, 10)를 출력하기 위해서는 두 번째 리스트에서 3번째부터 5번째까지 원소를 추출하면 됩니다. 해당 코드는 아래와 같습니다.

lst[[2]][3:5]
[1]  6  8 10

마무리

이번 포스트에서는 R 자료 구조 중 리스트(list)에 대한 맛보기 예제를 풀어보았습니다. 리스트(list) 자료구조는 R 입문자 분들에게 익숙하지 않은 자료구조지만, 학습을 지속하다 보면 점차 사용 횟수가 늘어나 자연스럽게 익숙해지게 되실 겁니다.

관련 링크

[1] [R] 리스트(List) 데이터 추가하기 (List Indexing)