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"
Anterior
Próximo