1.7 리스트(Lists)
리스트는 객체의 묶음이다. 단일 리스트는 모든 종류의 요소들(문자 벡터, 숫자 벡터, 행렬, 다른 리스트 등)을 포함할 수 있다. 리스트의 요소들은 보다 쉬은 접근을 위해 이름이 종종 부여된다.
l1 <- list(boo=v1, foo=v2, moo=v3, zoo="Animals!") # 요소별 이름을 갖는 리스트
l1## $boo
## [1] 1 2 3 4 5 6 7 8 9 10 NA NA NA NA NA
##
## $foo
## [1] 1 1 1 1 1
##
## $moo
## [1] TRUE TRUE FALSE
##
## $zoo
## [1] "Animals!"
l2 <- list(v1, v2, v3, "Animals!") # 요소별 이름이 갖지 않는 리스트
l2## [[1]]
## [1] 1 2 3 4 5 6 7 8 9 10 NA NA NA NA NA
##
## [[2]]
## [1] 1 1 1 1 1
##
## [[3]]
## [1] TRUE TRUE FALSE
##
## [[4]]
## [1] "Animals!"
빈(empty) 리스트 생성 : list() 함수 또는 NULL 사용
l3 <- list()
l4 <- NULL리스트 요소 접근 :
l1["boo"] # 한 개의 대괄호로 "boo" 요소에 접근: 그 결과는 리스트## $boo
## [1] 1 2 3 4 5 6 7 8 9 10 NA NA NA NA NA
l1[["boo"]] # 이중 대괄호로 "boo" 요소에 접근 : 그 결과는 숫자 벡터 v1## [1] 1 2 3 4 5 6 7 8 9 10 NA NA NA NA NA
l1[[1]] # 리스트의 첫 요소를 반환, 위와 동일 : 결과는 숫자 벡터 v1## [1] 1 2 3 4 5 6 7 8 9 10 NA NA NA NA NA
l1$boo # 이중 대괄호와 마찬가지로, $ 연산자로 "boo" 요소에 접근## [1] 1 2 3 4 5 6 7 8 9 10 NA NA NA NA NA
리스트에 요소 추가 :
l3[[1]] <- 11 # 빈 리스트 l3의 첫 번째 요소로 11을 추가
l3## [[1]]
## [1] 11
l4[[3]] <- c(22, 23) # 빈 리스트 l4의 3번째 요소로 벡터 추가
l4## [[1]]
## NULL
##
## [[2]]
## NULL
##
## [[3]]
## [1] 22 23
리스트 l4에 3번 째 요소를 추가했기 때문에, 첫 번째와 두 번째 요소가 생성되지만 그 값은 비어 있는 NULL이다.
l1[[5]] <- "More elements!" # 네 개의 요소를 갖는 리스트 l1에, 5번째 요소를 추가
l1## $boo
## [1] 1 2 3 4 5 6 7 8 9 10 NA NA NA NA NA
##
## $foo
## [1] 1 1 1 1 1
##
## $moo
## [1] TRUE TRUE FALSE
##
## $zoo
## [1] "Animals!"
##
## [[5]]
## [1] "More elements!"
l1[[8]] <- 1:11 # 리스트 l1의 8번쨰 요소에 1:11 벡터 추가
l1## $boo
## [1] 1 2 3 4 5 6 7 8 9 10 NA NA NA NA NA
##
## $foo
## [1] 1 1 1 1 1
##
## $moo
## [1] TRUE TRUE FALSE
##
## $zoo
## [1] "Animals!"
##
## [[5]]
## [1] "More elements!"
##
## [[6]]
## NULL
##
## [[7]]
## NULL
##
## [[8]]
## [1] 1 2 3 4 5 6 7 8 9 10 11
리스트 l1에 8번째 요소를 추가했지만, 6번째와 7번째는 그러지 않았다. 따라서 6번째와 7번째 요소는 비어있다(NULL).
l1$Something <- "A thing" # "Something"이라는 이름의 요소로 "A thing" 값을 추가
l1## $boo
## [1] 1 2 3 4 5 6 7 8 9 10 NA NA NA NA NA
##
## $foo
## [1] 1 1 1 1 1
##
## $moo
## [1] TRUE TRUE FALSE
##
## $zoo
## [1] "Animals!"
##
## [[5]]
## [1] "More elements!"
##
## [[6]]
## NULL
##
## [[7]]
## NULL
##
## [[8]]
## [1] 1 2 3 4 5 6 7 8 9 10 11
##
## $Something
## [1] "A thing"