데이터 R지?
Ch9_데이터 구조_1.5 리스트
jsBae
2022. 4. 30. 00:07
리스트
여러종류의 데이터 유형을 한데 묶어서 구성 할 수 있는 데이터 구조
1. 리스트 생성
#list()함수
> lst <- list(1, "A", TRUE, "Hello world", c(1:3), matrix(1:6, nrow=2))
> lst
[[1]]
[1] 1
[[2]]
[1] "A"
[[3]]
[1] TRUE
[[4]]
[1] "Hello world"
[[5]]
[1] 1 2 3
[[6]]
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
> lst[[5]]
[1] 1 2 3
> lst[[5]][1]
[1] 1
> lst[[5]][2]
[1] 2
> lst[[5]][3]
[1] 3
> lst[[5]][4]
[1] NA
>
> lst[[6]]
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
> lst[[6]][1]
[1] 1
> lst[[6]][2]
[1] 2
> lst[[6]][3]
[1] 3
> lst[[6]][4]
[1] 4
> lst[[6]][5]
[1] 5
> lst[[6]][6]
[1] 6
> lst[[6]][7]
[1] NA
>
> lst[[6]][1,2]
[1] 3
> lst[[6]][1, ]
[1] 1 3 5
> lst[[6]][ ,2]
[1] 3 4
> lst[[6]][ ,2:3]
[,1] [,2]
[1,] 3 5
[2,] 4 6
> lst[[6]][ ,c(1,3)]
[,1] [,2]
[1,] 1 5
[2,] 2 6
> names(lst) <-c("num","char","logi","str","vect","matr")
> lst
$num
[1] 1
$char
[1] "A"
$logi
[1] TRUE
$str
[1] "Hello world"
$vect
[1] 1 2 3
$matr
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
>
> lst$num
[1] 1
> lst$char
[1] "A"
> lst$logi
[1] TRUE
> lst$str
[1] "Hello world"
> lst$vect
[1] 1 2 3
> lst$vect[1]
[1] 1
> lst$vect[3]
[1] 3
> lst$matr
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
> lst$matr[1,2:3]
[1] 3 5
#2.리스트 인덱싱 [[ ]]
> lst <- list(1, "A", TRUE, "Hello world", c(1:3), matrix(1:6, nrow=2))
> lst
[[1]]
[1] 1
[[2]]
[1] "A"
[[3]]
[1] TRUE
[[4]]
[1] "Hello world"
[[5]]
[1] 1 2 3
[[6]]
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
>
> lst[[1]]
[1] 1
>
> lst[[1]] <-2
> lst[[1]]
[1] 2
>
> lst[[1]][1]<-3
> lst[[1]][2]<-4
> lst
[[1]]
[1] 3 4
[[2]]
[1] "A"
[[3]]
[1] TRUE
[[4]]
[1] "Hello world"
[[5]]
[1] 1 2 3
[[6]]
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
>
> lst[[7]] <- c(1:5)
> lst
[[1]]
[1] 3 4
[[2]]
[1] "A"
[[3]]
[1] TRUE
[[4]]
[1] "Hello world"
[[5]]
[1] 1 2 3
[[6]]
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
[[7]]
[1] 1 2 3 4 5
>
> lst[[7]][3]<-100
> lst
[[1]]
[1] 3 4
[[2]]
[1] "A"
[[3]]
[1] TRUE
[[4]]
[1] "Hello world"
[[5]]
[1] 1 2 3
[[6]]
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
[[7]]
[1] 1 2 100 4 5
>
> lst[[7]]<-lst[[7]][-c(1,3)]
> lst
[[1]]
[1] 3 4
[[2]]
[1] "A"
[[3]]
[1] TRUE
[[4]]
[1] "Hello world"
[[5]]
[1] 1 2 3
[[6]]
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
[[7]]
[1] 2 4 5
>
> lst[[1]]<-NULL
> lst[[5]] <- NULL
> lst
[[1]]
[1] "A"
[[2]]
[1] TRUE
[[3]]
[1] "Hello world"
[[4]]
[1] 1 2 3
[[5]]
[1] 2 4 5
>
> lst$vect[2] <-100
> lst$vect
[1] NA 100
#리스트 적용 함수
#unlist(), lappy() 함수
> lst <- list(c(1:10), matrix(1:6, nrow=2))
> lst
[[1]]
[1] 1 2 3 4 5 6 7 8 9 10
[[2]]
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
#unlist() - 리스트로 1차원으로 나열해서 벡터형태로 바꿈 - 벡터는 아님
> unlist(lst)
[1] 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6
> mean(lst)
[1] NA
Warning message:
In mean.default(lst) : 인자가 수치형 또는 논리형이 아니므로 NA를 반환합니다
> mean(lst[[1]])
[1] 5.5
> mean(lst[[2]])
[1] 3.5
#lappy() 함수
> lapply(lst, mean)
[[1]]
[1] 5.5
[[2]]
[1] 3.5
> lapply(lst, class)
[[1]]
[1] "integer"
[[2]]
[1] "matrix" "array"
> lst2 <- list(1, "A", TRUE, "Hello world", c(1:3), matrix(1:6, nrow=2))
> length(lst2)
[1] 6
> lapply(lst2, length)
[[1]]
[1] 1
[[2]]
[1] 1
[[3]]
[1] 1
[[4]]
[1] 1
[[5]]
[1] 3
[[6]]
[1] 6
[[4]]
[1] NA
[[5]]
[1] 2
[[6]]
[1] 3.5
> lst <-list(c(1:3),c(4:6),c(7:9))
> lst
[[1]]
[1] 1 2 3
[[2]]
[1] 4 5 6
[[3]]
[1] 7 8 9
> unlist(lst)
[1] 1 2 3 4 5 6 7 8 9
> mean(unlist(lst))
[1] 5
> paper <- list("Hello world!","Welcome","Have a nice day.")
> paper
[[1]]
[1] "Hello world!"
[[2]]
[1] "Welcome"
[[3]]
[1] "Have a nice day."
> unlist(paper)
[1] "Hello world!" "Welcome" "Have a nice day."
#names() 함수로 열 이름 할당
> lst<- list(1, "A", TRUE, "Hello world", c(1:3), matrix(1:6, nrow=2))
> lst
[[1]]
[1] 1
[[2]]
[1] "A"
[[3]]
[1] TRUE
[[4]]
[1] "Hello world"
[[5]]
[1] 1 2 3
[[6]]
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
> names(lst)
NULL
> names(lst) <- c("num","chr","logi","str","vect","matr")
> lst
$num
[1] 1
$chr
[1] "A"
$logi
[1] TRUE
$str
[1] "Hello world"
$vect
[1] 1 2 3
$matr
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
728x90
반응형