R - Listas
Listas são os objetos R que contêm elementos de diferentes tipos, como - números, strings, vetores e outra lista dentro deles. Uma lista também pode conter uma matriz ou uma função como seus elementos. A lista é criada usandolist() função.
Criação de uma lista
A seguir está um exemplo para criar uma lista contendo strings, números, vetores e valores lógicos.
# Create a list containing strings, numbers, vectors and a logical
# values.
list_data <- list("Red", "Green", c(21,32,11), TRUE, 51.23, 119.1)
print(list_data)
Quando executamos o código acima, ele produz o seguinte resultado -
[[1]]
[1] "Red"
[[2]]
[1] "Green"
[[3]]
[1] 21 32 11
[[4]]
[1] TRUE
[[5]]
[1] 51.23
[[6]]
[1] 119.1
Elementos da lista de nomes
Os elementos da lista podem receber nomes e podem ser acessados usando esses nomes.
# 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)
Quando executamos o código acima, ele produz o seguinte resultado -
$`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
Acessando Elementos da Lista
Os elementos da lista podem ser acessados pelo índice do elemento na lista. No caso de listas nomeadas, também pode ser acessado usando os nomes.
Continuamos a usar a lista no exemplo acima -
# 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")
# Access the first element of the list.
print(list_data[1])
# Access the thrid element. As it is also a list, all its elements will be printed.
print(list_data[3])
# Access the list element using the name of the element.
print(list_data$A_Matrix)
Quando executamos o código acima, ele produz o seguinte resultado -
$`1st_Quarter`
[1] "Jan" "Feb" "Mar"
$A_Inner_list
$A_Inner_list[[1]]
[1] "green"
$A_Inner_list[[2]]
[1] 12.3
[,1] [,2] [,3]
[1,] 3 5 -2
[2,] 9 1 8
Manipulando Elementos de Lista
Podemos adicionar, excluir e atualizar os elementos da lista conforme mostrado abaixo. Podemos adicionar e excluir elementos apenas no final de uma lista. Mas podemos atualizar qualquer elemento.
# 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")
# Add element at the end of the list.
list_data[4] <- "New element"
print(list_data[4])
# Remove the last element.
list_data[4] <- NULL
# Print the 4th Element.
print(list_data[4])
# Update the 3rd Element.
list_data[3] <- "updated element"
print(list_data[3])
Quando executamos o código acima, ele produz o seguinte resultado -
[[1]]
[1] "New element"
$<NA>
NULL
$`A Inner list`
[1] "updated element"
Mesclando Listas
Você pode mesclar muitas listas em uma lista, colocando todas as listas dentro de uma função list ().
# Create two lists.
list1 <- list(1,2,3)
list2 <- list("Sun","Mon","Tue")
# Merge the two lists.
merged.list <- c(list1,list2)
# Print the merged list.
print(merged.list)
Quando executamos o código acima, ele produz o seguinte resultado -
[[1]]
[1] 1
[[2]]
[1] 2
[[3]]
[1] 3
[[4]]
[1] "Sun"
[[5]]
[1] "Mon"
[[6]]
[1] "Tue"
Convertendo lista em vetor
Uma lista pode ser convertida em um vetor para que os elementos do vetor possam ser usados para manipulação posterior. Todas as operações aritméticas em vetores podem ser aplicadas após a lista ser convertida em vetores. Para fazer essa conversão, usamos ounlist()função. Ele pega a lista como entrada e produz um vetor.
# Create lists.
list1 <- list(1:5)
print(list1)
list2 <-list(10:14)
print(list2)
# Convert the lists to vectors.
v1 <- unlist(list1)
v2 <- unlist(list2)
print(v1)
print(v2)
# Now add the vectors
result <- v1+v2
print(result)
Quando executamos o código acima, ele produz o seguinte resultado -
[[1]]
[1] 1 2 3 4 5
[[1]]
[1] 10 11 12 13 14
[1] 1 2 3 4 5
[1] 10 11 12 13 14
[1] 11 13 15 17 19