2  Listas

Una lista es una coleccion ordenada de elementos. Las listas son mutables, lo que significa que podemos actualizar el elemento de la lista a nivel de indice.

Sin embargo, una lista tambien es un tipo de secuencia, por lo que admite la indexacion. Para crear la lista, necesitamos poner elementos dentro de “list( )” separandolos con una coma.

#Creando una lista
lista1 <- list("Juan Perez", 234)
lista1
[[1]]
[1] "Juan Perez"

[[2]]
[1] 234
#Clase de la lista
class(lista1)
[1] "list"

2.1 Acceder a los elementos de la lista

La lista admite la indexación (comenzando desde 1), por lo que, para acceder a los elementos de una lista de R, usaremos el indice de ese elemento.

# Accede al primer elemento
lista1[[1]]
[1] "Juan Perez"
# Accede al segundo elemento
lista1[[2]]
[1] 234

Podemos incluir en una listas, secuencias y vectores.

#Creando una lista que incluye secuencias y vectores
lista2 <- list(2:5, c("a", "b"), c(TRUE, FALSE, TRUE), 10.5, "Elemento")
lista2
[[1]]
[1] 2 3 4 5

[[2]]
[1] "a" "b"

[[3]]
[1]  TRUE FALSE  TRUE

[[4]]
[1] 10.5

[[5]]
[1] "Elemento"
# Accede al primer elemento
lista2[[1]]
[1] 2 3 4 5
# Muestra la estructura de la lista
str(lista2)
List of 5
 $ : int [1:4] 2 3 4 5
 $ : chr [1:2] "a" "b"
 $ : logi [1:3] TRUE FALSE TRUE
 $ : num 10.5
 $ : chr "Elemento"

2.2 Agregar elementos a una lista

lista3 <- list(3, "Pepe", 5:9)
elemento_nuevo <- "Sara"
#Podemos actualizar la lista3 o crear una nueva lista donde este agregado el elemento_nuevo
lista3 <- list(lista3, elemento_nuevo)
lista3
[[1]]
[[1]][[1]]
[1] 3

[[1]][[2]]
[1] "Pepe"

[[1]][[3]]
[1] 5 6 7 8 9


[[2]]
[1] "Sara"

2.3 Concatenacion y repeticion

Estos son los codigos que se usan para distintas funciones en R.

De esta manera se pueden combinar elementos de una lista a otra. Las listas se colocan en el orden que se desea que aparezcan.

lista1 <- list(2, 4, 6, 8, 10)
lista2 <- list(1, 3, 5, 7)
numeros <- list(lista2, lista1)
print(numeros)
[[1]]
[[1]][[1]]
[1] 1

[[1]][[2]]
[1] 3

[[1]][[3]]
[1] 5

[[1]][[4]]
[1] 7


[[2]]
[[2]][[1]]
[1] 2

[[2]][[2]]
[1] 4

[[2]][[3]]
[1] 6

[[2]][[4]]
[1] 8

[[2]][[5]]
[1] 10

2.4 Actualizar la lista de Python

Usando la indexacion, podemos actualizar el valor indexado especificado en una lista.

numeros <- list(1,2,3,4,5,6)
numeros[2] <- 22
print(numeros)
[[1]]
[1] 1

[[2]]
[1] 22

[[3]]
[1] 3

[[4]]
[1] 4

[[5]]
[1] 5

[[6]]
[1] 6

2.5 Eliminar un elemento de la lista

Para eliminar un elemento se usa el siguiente codigo:

numeros <- list(1,2,3,4,5,6)
numeros <- numeros[numeros != 6]
print(numeros)
[[1]]
[1] 1

[[2]]
[1] 2

[[3]]
[1] 3

[[4]]
[1] 4

[[5]]
[1] 5

Analogamente, tambien se puede usar:

numeros <- list(1,2,3,4,5,6)
numeros <- numeros[-2]
print(numeros)
[[1]]
[1] 1

[[2]]
[1] 3

[[3]]
[1] 4

[[4]]
[1] 5

[[5]]
[1] 6

2.6 Comprobar la pertenencia de un elemento

Podemos usar la funcion %in% para comprobar si un elemento se encuentra en la lista.

frutas <- list("fresa", "papaya", "piña")
"fresa" %in% frutas
[1] TRUE
cat("Comprobando si el mango está en la lista :", "plátano" %in% frutas)
Comprobando si el mango está en la lista : FALSE

2.7 Ordenar los elementos de la lista

Para ordenar los elementos de una lista primero debemos transformarla a un vector, luego ordenamos el vector con la funcion “sort” y por ultimo volvemos a convertirla a una lista.

mi_lista <- list(20, 25, 22, 64, 15, 28)

mi_vector <- unlist(mi_lista)
mi_vector_ordenado <- sort(mi_vector)

mi_lista_ordenada <- list(mi_vector_ordenado)
print(mi_lista_ordenada)
[[1]]
[1] 15 20 22 25 28 64

Si queremos ordenarla de manera decreciente deberemos seguir los mismos pasos pero agregando “decreasing = True” en la funcion sort.

mi_lista <- list(20, 25, 22, 64, 15, 28)

mi_vector <- unlist(mi_lista)
mi_vector_ordenado <- sort(mi_vector, decreasing = TRUE)

mi_lista_ordenada <- list(mi_vector_ordenado)
print(mi_lista_ordenada)
[[1]]
[1] 64 28 25 22 20 15

2.8 Longitud de una lista y recuento de un elemento en la lista

Para obtener la longitud de cualquier lista (tamaño de la lista), podemos usar la función len(). Y para obtener el recuento de cuantas apariciones del elemento o elemento especificado, podemos usar la funcion count().

# Ejemplo 1 
mi_lista <- list(20, 25, 22, 64, 15, 28,25,30,25)

cat("Mi Lista:\n")
Mi Lista:
print(mi_lista)
[[1]]
[1] 20

[[2]]
[1] 25

[[3]]
[1] 22

[[4]]
[1] 64

[[5]]
[1] 15

[[6]]
[1] 28

[[7]]
[1] 25

[[8]]
[1] 30

[[9]]
[1] 25
#  Hallar la longitud

longitud_lista <- length(mi_lista)

print(longitud_lista)
[1] 9
# Hallar cuantas veces contengo un elemento 

cant_lista <- sum(mi_lista ==25) 
print(cant_lista)
[1] 3
# Ejemplo 2

mi_lista <- c(1,2,3,4,5)