자료 구조 책에서 리스트(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 |