데이터 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
반응형