천선생의 삶
[R] 데이터 유형에 따른 정리(4) - list 본문
안녕하세요. 천선생입니다.
지난 포스트까지 vector, matrix, array 에 대해서 알아봤는데요,
이 3가지 데이터 유형은 모두 배열을 기반으로 한 데이터 유형입니다.
따라서 다양한 데이터 유형을 저장할 수 없다는 점에서 큰 단점을 갖기도 합니다.
따라서 이번에는 이러한 단점을 극복하기 위해 필요한 list 에 대하여 알아보도록 하겠습니다.
- LIST?
이전의 데이터 유형은 차원에 따른 모양을 가지며, 동일 데이터 타입만을 가질 수 있었습니다.
그러나 list의 경우, 데이터 타입과 데이터의 모양에 무관하게 저장이 가능합니다.
즉, 기존과는 다르게 '여러 데이터를 담아낸다.' 라고 받아들이시면 이해가 빠르실 것 같습니다.
각 서랍은 KEY라고 불리우는 인자로 이름붙여지며, 이는 Python의 dictionary와 비슷한 성질입니다.
- CODE
리스트를 저장할 때는, list 라는 함수를 사용합니다.
list 함수 내부에서 각 KEY에 해당하는 데이터를 선언해 주는 방식으로 데이터를 저장합니다.
그러나 서랍에 데이터를 넣는다는 컨셉에 맞추어, 미리 선언된 데이터를 입력해보겠습니다.
#리스트 저장 예
A <- letters[1:10] # 문자형 벡터를 인덱스를 통하여 저장한다.
B <- matrix(1:20, 4, byrow = T) # 매트릭스 저장한다.
C <- array(1:12, dim = c(2, 2, 3))
D <- list(A_data = A, B_data = B, C_data = C) # 각 key의 이름을 지정할 수 있다.
# $A_data
# [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j"
#
# $B_data
# [,1] [,2] [,3] [,4] [,5]
# [1,] 1 2 3 4 5
# [2,] 6 7 8 9 10
# [3,] 11 12 13 14 15
# [4,] 16 17 18 19 20
#
# $C_data
# , , 1
#
# [,1] [,2]
# [1,] 1 3
# [2,] 2 4
#
# , , 2
#
# [,1] [,2]
# [1,] 5 7
# [2,] 6 8
#
# , , 3
#
# [,1] [,2]
# [1,] 9 11
# [2,] 10 12
- INDEXING?
리스트에서 인덱스를 통하여 데이터에 접근하는 방법은 이전에 다룬 데이터 유형과는 약간 다릅니다.
또한 이후에 다루게 될 데이터프레임과도 밀접한 관련이 있으므로, 주의깊게 보시길 바랍니다!
리스트에서 기본적으로 접근하는 방법은 리스트명$KEY 로 각 서랍에 접근하게 됩니다.
만약 KEY 를 설정하지 않았다면 리스트명[[서랍의 층수]] 으로 접근할 수 있습니다.
대괄호 2개를 사용하여 접근하는 방법은 리스트에서 처음 등장하므로, 헷갈리지 않도록 주의하세요!!
#인덱싱 예
A <- letters[1:10] # 문자형 벡터를 인덱스를 통하여 저장한다.
B <- matrix(1:20, 4, byrow = T) # 매트릭스 저장한다.
C <- array(1:12, dim = c(2, 2, 3))
D <- list(A_data = A, B_data = B, C_data = C) # 각 key의 이름을 지정할 수 있다.
D$A_data # key를 통한 접근
# "a" "b" "c" "d" "e" "f" "g" "h" "i" "j"
D[[2]] # 층수를 통한 접근
# [,1] [,2] [,3] [,4] [,5]
# [1,] 1 2 3 4 5
# [2,] 6 7 8 9 10
# [3,] 11 12 13 14 15
# [4,] 16 17 18 19 20
D[[2]][1, 3] # 접근한 데이터에서 인덱스를 통한 재접근
마지막 D[[2]][1, 3] 부분을 보시면, 리스트의 강력함을 확인하실 것이라고 생각합니다.
즉, 불러온 차원(서랍)에서 인덱스를 통한 재접근이 가능합니다.
- 활용
위에서 확인하셨듯이, 리스트는 데이터의 유형과 형태에 구애받지 않고 저장이 가능합니다.
심지어 리스트 안에 새로운 리스트를 저장하는 것까지 가능합니다!
이러한 리스트의 특징은 이후에 다루게 될 여러 연산함수와 더불어 모형적합에서 결과값 을 저장하는데 활용됩니다.
#리스트를 통한 결과값 저장 예제
A <- 1:20
res <- list(sum_A = sum(A), #sum 함수를 통한 벡터의 합
summary_A = summary(A)) #summary 함수를 통한 요약통계량
# $sum_A
# [1] 210
#
# $summary_A
# Min. 1st Qu. Median Mean 3rd Qu. Max.
# 1.00 5.75 10.50 10.50 15.25 20.00
'Data Analysis > R Basic' 카테고리의 다른 글
[R] 조건문 활용하기 - if, else, if else (0) | 2019.07.10 |
---|---|
[R] 데이터 유형에 따른 정리(5) - dataframe (0) | 2019.07.09 |
[R] 데이터 유형에 따른 정리(3) - array (0) | 2019.07.07 |
[R] 데이터 유형에 따른 정리(2) - matrix (0) | 2019.07.06 |
[R] 데이터 유형에 따른 정리(1) - vector (0) | 2019.07.05 |