Listas
Criação
Criando um vetor:
v1 <- 1:4
v1
## [1] 1 2 3 4
Criando uma matriz:
m1 <- matrix(11:14, nrow = 2, byrow = T)
m1
## [,1] [,2]
## [1,] 11 12
## [2,] 13 14
Criando um data frame:
df1 <- data.frame(col_a = 1:4,
col_b = 5:8)
df1
## col_a col_b
## 1 1 5
## 2 2 6
## 3 3 7
## 4 4 8
Criando uma lista:
l1 <- list(v1, m1, df1)
l1
## [[1]]
## [1] 1 2 3 4
##
## [[2]]
## [,1] [,2]
## [1,] 11 12
## [2,] 13 14
##
## [[3]]
## col_a col_b
## 1 1 5
## 2 2 6
## 3 3 7
## 4 4 8
l2 <- list(elemento1 = v1,
elemento2 = m1,
elemento3 = df1,
elemento4 = l1)
l2
## $elemento1
## [1] 1 2 3 4
##
## $elemento2
## [,1] [,2]
## [1,] 11 12
## [2,] 13 14
##
## $elemento3
## col_a col_b
## 1 1 5
## 2 2 6
## 3 3 7
## 4 4 8
##
## $elemento4
## $elemento4[[1]]
## [1] 1 2 3 4
##
## $elemento4[[2]]
## [,1] [,2]
## [1,] 11 12
## [2,] 13 14
##
## $elemento4[[3]]
## col_a col_b
## 1 1 5
## 2 2 6
## 3 3 7
## 4 4 8
Classe e tipo:
class(l1)
## [1] "list"
typeof(l1)
## [1] "list"
Teste
is.list(l1)
## [1] TRUE
Conversão
Convertendo um vetor em lista:
v1_list <- as.list(v1)
v1_list
## [[1]]
## [1] 1
##
## [[2]]
## [1] 2
##
## [[3]]
## [1] 3
##
## [[4]]
## [1] 4
Convertendo uma matriz em lista:
m1_list <- as.list(m1)
m1_list
## [[1]]
## [1] 11
##
## [[2]]
## [1] 13
##
## [[3]]
## [1] 12
##
## [[4]]
## [1] 14
Convertendo um data frame em lista:
df1_list <- as.list(df1)
df1_list
## $col_a
## [1] 1 2 3 4
##
## $col_b
## [1] 5 6 7 8
Convertendo uma lista em vetor:
v1_unlist <- unlist(v1_list)
v1_unlist
## [1] 1 2 3 4
m1_unlist <- unlist(m1_list)
m1_unlist
## [1] 11 13 12 14
df1_unlist <- unlist(df1_list)
df1_unlist
## col_a1 col_a2 col_a3 col_a4 col_b1 col_b2 col_b3 col_b4
## 1 2 3 4 5 6 7 8
l1_unlist <- unlist(l1)
l1_unlist
## col_a1 col_a2 col_a3
## 1 2 3 4 11 13 12 14 1 2 3
## col_a4 col_b1 col_b2 col_b3 col_b4
## 4 5 6 7 8
Indexação
Acessando o primeiro elemento de l1, mantendo a estrutura de lista:
l1[1]
## [[1]]
## [1] 1 2 3 4
class(l1[1])
## [1] "list"
Acessando o primeiro elemento de l1, respeitando a estrutura original do elemento:
l1[[1]]
## [1] 1 2 3 4
class(l1[[1]])
## [1] "integer"
Acessando o primeiro elemento do segundo elemento de l1:
l1[[2]][1]
## [1] 11
Acessando o terceiro elemento de l2, respeitando a estrutura original do elemento:
l2['elemento3']
## $elemento3
## col_a col_b
## 1 1 5
## 2 2 6
## 3 3 7
## 4 4 8
class(l2['elemento3'])
## [1] "list"
Acessando o terceiro elemento de l2, respeitando a estrutura original do elemento:
l2$elemento3
## col_a col_b
## 1 1 5
## 2 2 6
## 3 3 7
## 4 4 8
class(l2$elemento3)
## [1] "data.frame"
l2[['elemento3']]
## col_a col_b
## 1 1 5
## 2 2 6
## 3 3 7
## 4 4 8
class(l2[['elemento3']])
## [1] "data.frame"
Acessando a segunda coluna do terceiro elemento de l2:
l2$elemento3[,2]
## [1] 5 6 7 8
l2[['elemento3']][,2]
## [1] 5 6 7 8
Nomes
Nomeando os elementos de l1:
length(l1)
## [1] 3
names(l1) <- c("vetor", "matriz", "dataframe")
l1
## $vetor
## [1] 1 2 3 4
##
## $matriz
## [,1] [,2]
## [1,] 11 12
## [2,] 13 14
##
## $dataframe
## col_a col_b
## 1 1 5
## 2 2 6
## 3 3 7
## 4 4 8
names(l1)
## [1] "vetor" "matriz" "dataframe"