본문 바로가기

R/R을 이용한 데이터 처리&분석 실무

리스트

반응형

자료 구조 책에서 리스트(list)는 배열과 비교할 때 데이터를 중간 중간에 삽입하는 데 유리한 구조로 설명한다. 물론 그러한 장점은 동일하지만 R에서 리스트는 데이터를 접근한다는 관점에서 다른 언어의 해시 테이블 또는 딕셔너리로 종종 설명된다. 즉, 리스트는 '(키, 값)' 형태의 데이터를 담는 연관 배열(Associative Array)이다.

 

또 다른 리스트의 특징은 벡터와 달리 값이 서로 다른 데이터 타입을 담을 수 있다는 점이다. 따라서 "이름"이라는 키에 "홍길동"이라는 문자열 값을 저장하고, "성적"이라는 키에 95라는 숫자 값을 지정할 수 있다.

 

리스트 생성

리스트는 list()함수를 사용해 생성한다.

 

-list : 리스트 객체를 생성한다.

list(key1=value1, key2=value2, ...)

 

다음은 name에 "foo", height에 70을 저장하는 리스트를 보여준다.

>(x<-list(name="foo", height=70))
$ name
[1] "foo"

$height
[1] 70

 

이때 각 값이 반드시 스칼라일 필요는 없다. 다음처럼 벡터를 저장할 수도 있다.

>(x<-list(name="foo", height=c(1,3,5)))
$name
[1] "foo"

$height
[1] 1 3 5

 

이처럼 리스트에는 다양한 값을 혼합해서 저장할 수 있다. 따라서 리스트 안에 리스트를 중첩하는 일도 가능하다.

>list(a=list(val=c(1,2,3)), b=list(val=c(1,2,3,4)))
$a
$a$val
[1]1 2 3

$b
$b$val
[1]1 2 3 4

 

리스트 데이터 접근

리스트에 저장된 데이터는 색인 또는 키를 사용해 접근할 수 있다.

문법 의미
x$key 리스트 x에서 키 값 key에 해당하는 값
x[n] 리스트 x에서 n번째 데이터의 서브리스트
x[[n]] 리스트 x에서 n번째 저장된 값

 

앞에서 살펴본 것처럼 리스트를 출력해보면 '$키'형태로 각 키가 나열된다. 데이터는 'x$key'ㅎ형태로 접근한다. 도는 각 요소를 순서대로 x[[n]]형태로 접근할 수도 있다.

>x<-list(name="foo", height=c(1,3,5))
>x$name
[1]"foo"
>x$height
[1]1 3 5
>x[[1]]
[1]"foo"
>x[[2}}
[1]1 3 5

 

x[[n]]과 달리 x[n] 형태는 각 값이 아니라 '(키,값)'을 담고 있는 서브리스트를 반환한다. 예를 들어, 다음 코드를 보자.

>x[1]
$name
[1]"foo"
>x[2]
$height
[1]1 3 5

 

코드에서 볼 수 있듯이 x[1]은 (name, "foo")를 담고 있는 리스트다.

 

R을 이용한 데이터 처리&분석 실무 中

반응형

'R > R을 이용한 데이터 처리&분석 실무' 카테고리의 다른 글

타입 판별, 타입변환  (0) 2020.01.29
데이터 프레임  (0) 2020.01.29
벡터  (0) 2020.01.28
스칼라  (0) 2020.01.27
변수  (0) 2020.01.27