열렬히.뛰기

리스트

Language > 프로그래밍 언어 > R > R언어 : 자료구조 > 리스트

리스트 만들기

r
list_data <- list("Red", "Green", c(21,32,11), TRUE, 51.23, 119.1)
print(list_data)
r
> list_data <- list("Red", "Green", c(21,32,11), TRUE, 51.23, 119.1)
> print(list_data)
[[1]]
[1] "Red"

[[2]]
[1] "Green"

[[3]]
[1] 21 32 11

[[4]]
[1] TRUE

[[5]]
[1] 51.23

[[6]]
[1] 119.1

원소 편집하기

r
# 데이터 지워버리기
list_data[[1]] = NULL

# 값 바꾸기
list_[[2]] = "love"

리스트끼리 합치기

r
merged_list = c(list1, list2)
merged_lsit

리스트 활용

이름 붙이기

r
# Create a list containing a vector, a matrix and a list.
list_data <- list(c("Jan","Feb","Mar"), 
									matrix(c(3,9,5,1,-2,8), nrow = 2),
								  list("green",12.3))

# Give names to the elements in the list.
names(list_data) <- c("1st Quarter", "A_Matrix", "A Inner list")

# Show the list.
print(list_data)
r
> print(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

인덱싱

  • 대괄호를 하나만 사용하면 해당 원소를 항상 리스트로 출력
  • 대괄호를 겹쳐서 사용하면 해당 원소를 본래 자료구조로 출력
    • '겹대괄호' 안에는 인덱스를 단 하나만 지정
  • 리스트에 원소명이 있으면 달러 기호를 사용할 수 있다.
r
lst1[1]
lst1[c(1,3)]

lst1[[1]]
lst1$a

리스트 분해

  • 리스트의 경우 다양한 타입이 섞여있음을 가정하기에, 산술 연산이 안 된다.
  • 이럴때 unlist() 함수를 사용해 벡터로 되돌릴 수 있다.
r
list1 = list(1:5)
list2 = list(10:14)

v1 = unlist(list1); v2 = unlist(list2)
print(v1 + v2)