728x90
반응형
지금까지 R의 기본적인 데이터 타입인 스칼라, 벡터, 행렬, 배열, 데이터프레임에 대해 공부해보았다.
이번 포스트에서는 R에서 기본적으로 제공하는 마지막 데이터 타입인 List에 대해 공부해보도록 하자.
리스트(List)
: 리스트는 R에 있는 데이터 타입 중 가장 독특한 데이터 타입이라고 할 수 있는데, 말 그대로 모든 데이터 타입을 담을 수 있는 데이터 타입이 바로 리스트이다.
- 리스트는 key, value 형태로 이루어져있다.
- 리스트는 모든 데이터 구조를 포함하는 데이터 구조이다.
- 여러 데이터 구조를 합하여 하나의 리스트를 만들 수 있다.
- 다른 언어의 Hash table이나 Dictionary에 해당한다.
- 서로 다른 변수 타입을 담을 수 있다.
- 리스트는 배열(Array), 데이터프레임(Data Frame)과 달리 들어가는 데이터들의 길이가 서로 같지 않아도 담을 수 있다.
- 리스트에 담긴 데이터마다 이름(key)을 부여할 수 있다.
- list()
: 리스트를 만드는 함수
# 데이터프레임, 행렬, 벡터가 들어간 리스트를 만들어보자.
vt1 = c("민철", "재성", "기훈", "현승", "현택", "윤기" ,"재빈", "현희", "미선", "선화")
vt2 = c(70, 60, 50, 80, 90, 80, 65, 75, 90, 80)
vt3 = c(80, 70, 85, 65, 55, 70, 75, 80, 65, 75)
vt4 = c(75, 80, 90, 75, 85, 75, 80, 85, 80, 85)
df = data.frame("name" = vt1, "math" = vt2, "english" = vt3, "science" = vt4)
mat = matrix(seq(1, 12), nrow = 4)
vt = c("A", "B", "C", "D")
List = list(data1 = df, data2 = mat, data3 = vt)
List
## $data1
## name math english science
## 1 민철 70 80 75
## 2 재성 60 70 80
## 3 기훈 50 85 90
## 4 현승 80 65 75
## 5 현택 90 55 85
## 6 윤기 80 70 75
## 7 재빈 65 75 80
## 8 현희 75 80 85
## 9 미선 90 65 80
## 10 선화 80 75 85
##
## $data2
## [,1] [,2] [,3]
## [1,] 1 5 9
## [2,] 2 6 10
## [3,] 3 7 11
## [4,] 4 8 12
##
## $data3
## [1] "A" "B" "C" "D"
- 리스트 생성 시, 정한 이름으로 각 데이터의 key 값이 생성된 것을 알 수 있다.
리스트의 indexing
- 리스트의 특징은 리스트에 포함된 데이터들을 key라는 이름으로 불러올 수 있다는 것이다.
- 리스트의 indexing 방식은 지금까지와 약간 다르므로, 표로 정리해보겠다.
문법 | 의미 |
list$key | 리스트 list에서 키 값 key에 해당하는 데이터를 가지고 온다. |
list[n] | 리스트 list에서 n번째 데이터의 서브리스트를 가지고 온다. |
list[[n]] | 리스트 list에서 n번째 저장된 값을 가지고 온다. |
List$data1
## name math english science
## 1 민철 70 80 75
## 2 재성 60 70 80
## 3 기훈 50 85 90
## 4 현승 80 65 75
## 5 현택 90 55 85
## 6 윤기 80 70 75
## 7 재빈 65 75 80
## 8 현희 75 80 85
## 9 미선 90 65 80
## 10 선화 80 75 85
List[2]
## $data2
## [,1] [,2] [,3]
## [1,] 1 5 9
## [2,] 2 6 10
## [3,] 3 7 11
## [4,] 4 8 12
- 위 표에서 설명한 서브리스트가 바로 위 형태이다.
- list는 key와 value 2가지로 이루어져있으며, 위 List[2]의 결과를 보면, 이 역시 key와 value 2가지로 이루어진 list형임을 알 수 있다.
List[[2]]
## [,1] [,2] [,3]
## [1,] 1 5 9
## [2,] 2 6 10
## [3,] 3 7 11
## [4,] 4 8 12
- [[n]]를 사용하면, 서브리스트가 아닌 그 데이터를 바로 가지고 온다.
리스트형에 대한 설명은 여기까지 하도록 하겠다.
설명이 매우 짧기 때문에 리스트형의 사용 용도가 그리 많지 않을 것으로 생각할 수 있는데, 길이가 다른 데이터 형을 담을 수 있다는 list형은 그 특징만으로도 사용처가 상당히 많다고 할 수 있다.
특히 R에 있는 lapply와 같은 리스트 형을 대상으로 한 함수나, 들어가는 데이터와 나오는 데이터의 길이가 불규칙한 경우, list형을 사용하면 쉽게 해결할 수 있다.
지금까지 R의 가장 기초가 되는 데이터 타입에 대해 공부해보았다.
데이터 타입은 R을 쓸 때, 기본 상식처럼 다룰 수 있어야하며, 데이터 타입을 잘 다루는 것이 R로 코드를 짤 때, 기초가 되는 부분이라고 할 수 있다.
다음 포스트에선 지금까지 공부한 타입과 그 판별, 변환 방법에 간략하게 정리를 해보도록 하겠다.
728x90
반응형
'R > Basic' 카테고리의 다른 글
R(기초) 패키지란? (0) | 2020.06.23 |
---|---|
R(기초) 데이터 타입 판별과 타입 변환 (0) | 2020.06.22 |
R(기초) 데이터프레임(DataFrame)(2부) (0) | 2020.06.22 |
R(기초) 데이터프레임(Data Frame)(1부) (0) | 2020.06.21 |
R(기초) 배열(Array) (0) | 2020.06.19 |