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

+ Recent posts