9.6 리스트의 조작

아래와 같이 리스트에 요소를 추가, 삭제 그리고 업데이트 할 수 있습니다. 리스트 요소의 추가는 리스트의 끝에서만 이루어집니다.

키워드가 정해지지 않은 리스트의 경우는 정수형의 색인 번호를 이용합니다.

# 벡터, 행렬 그리고 리스트를 요소로 포함하는 리스트를 생성합니다.
list_data <- list(c("Jan","Feb","Mar"), 
                  matrix(c(3,9,5,1,-2,8), nrow = 2),
                  list("green",12.3))
list_data                        # 리스트의 요소가 정수형으로 색인이 됩니다.
## [[1]]
## [1] "Jan" "Feb" "Mar"
## 
## [[2]]
##      [,1] [,2] [,3]
## [1,]    3    5   -2
## [2,]    9    1    8
## 
## [[3]]
## [[3]][[1]]
## [1] "green"
## 
## [[3]][[2]]
## [1] 12.3
# 리스트 요소에 이름을 부여합니다.
names(list_data) <- c("1st Quarter", "A_Matrix", "A Inner list")
list_data                        # 리스트의 요소에 정수형 이름이 부여되어 있습니다.
## $`1st Quarter`
## [1] "Jan" "Feb" "Mar"
## 
## $A_Matrix
##      [,1] [,2] [,3]
## [1,]    3    5   -2
## [2,]    9    1    8
## 
## $`A Inner list`
## $`A Inner list`[[1]]
## [1] "green"
## 
## $`A Inner list`[[2]]
## [1] 12.3
## 정수형의 색인 번호를 이용하여 리스트를 조작할 수 있습니다.
# 리스트에 요소를 추가합니다.
list_data[4] <- "New element"    # 리스트에 4번째 요소를 추가하고 "New Element" 값을 할당합니다.
list_data                        # 수정된 리스트를 확인합니다.
## $`1st Quarter`
## [1] "Jan" "Feb" "Mar"
## 
## $A_Matrix
##      [,1] [,2] [,3]
## [1,]    3    5   -2
## [2,]    9    1    8
## 
## $`A Inner list`
## $`A Inner list`[[1]]
## [1] "green"
## 
## $`A Inner list`[[2]]
## [1] 12.3
## 
## 
## [[4]]
## [1] "New element"
# NULL을 이용하여 마지막 요소를 제거합니다.
list_data[4] <- NULL             # NULL 값을 입력하면 4번째 요소가 리스트에서 제거됩니다.
list_data                        # 4번째 요소가 없음을 알 수 있습니다.
## $`1st Quarter`
## [1] "Jan" "Feb" "Mar"
## 
## $A_Matrix
##      [,1] [,2] [,3]
## [1,]    3    5   -2
## [2,]    9    1    8
## 
## $`A Inner list`
## $`A Inner list`[[1]]
## [1] "green"
## 
## $`A Inner list`[[2]]
## [1] 12.3
# 3번째 요소 값을 수정합니다.
list_data[3] <- "updated element"
list_data
## $`1st Quarter`
## [1] "Jan" "Feb" "Mar"
## 
## $A_Matrix
##      [,1] [,2] [,3]
## [1,]    3    5   -2
## [2,]    9    1    8
## 
## $`A Inner list`
## [1] "updated element"
## 키워드를 이용하여 리스트를 조작하면 다음과 같습니다.
# 리스트에 요소를 추가합니다.
list_data$new <- "New element"    # 네 번째 요소의 태그가 new가 되면, 그 값은 "New Element"가 할당됩니다.
names(list_data)                  # list_data의 키워드 목록을 확인합니다.
## [1] "1st Quarter"  "A_Matrix"     "A Inner list" "new"
list_data$new                     # $ 연산자를 이용하여 new 요소의 값을 확인합니다.
## [1] "New element"
# NULL을 이용하여 마지막 요소를 제거합니다.
list_data$new <- NULL             # new 요소의 값을 제거합니다.
list_data                         # 수정된 리스트를 확인합니다.
## $`1st Quarter`
## [1] "Jan" "Feb" "Mar"
## 
## $A_Matrix
##      [,1] [,2] [,3]
## [1,]    3    5   -2
## [2,]    9    1    8
## 
## $`A Inner list`
## [1] "updated element"
# 3번째 요소 값을 수정합니다.
list_data$`A Inner list` <- list("green",12.3) # 태그에 공란이 있는 경우 ``로 태그를 묶어 줍니다.
                                               # `A Inner list`의 데이터를 "list("green",12.3)"로 수정합니다.
list_data                                      # 수정된 값을 확인합니다.
## $`1st Quarter`
## [1] "Jan" "Feb" "Mar"
## 
## $A_Matrix
##      [,1] [,2] [,3]
## [1,]    3    5   -2
## [2,]    9    1    8
## 
## $`A Inner list`
## $`A Inner list`[[1]]
## [1] "green"
## 
## $`A Inner list`[[2]]
## [1] 12.3
                                               # $`A Inner list` 요소가 다음과 같음을 확인할 수 있습니다.
                                               # $`A Inner list`[[1]], $`A Inner list`[[2]]