3  Lista

Una lista es una colección ordenada de elementos. Las listas son mutables, lo que significa que podemos actualizar el elemento de la lista a nivel de índice.

Sin embargo, una lista también es un tipo de secuencia, por lo que admite la indexación. Para crear la lista, necesitamos poner elementos dentro de los corchetes ([ ]) separándolos con una coma.

# Ejemplo
x = c(1,2,3,4,5)
y = c('manzana','naranja','mango')

# creando la lista
mi_lista = list(x, y)
mi_lista
[[1]]
[1] 1 2 3 4 5

[[2]]
[1] "manzana" "naranja" "mango"  

3.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, usaremos el índice de ese elemento.

# Primer elemento de la lista
mi_lista[1]
[[1]]
[1] 1 2 3 4 5
# Primer elemento de la lista, simplificando la salida
mi_lista[[1]]
[1] 1 2 3 4 5
# Primer elemento del primer elemento de la lista.
mi_lista[[1]][1]
[1] 1
unlist(mi_lista[1])[1] # Equivalente
[1] 1

3.2 Agregar elementos en la lista

# Crear una lista inicial
mi_lista <- list(1, 2, 3)

# Elementos para agregar en una sola línea horizontal
nuevos_elementos <- c(4, 5, 6)

# Utilizar append para agregar elementos en una sola línea horizontal
mi_lista <- append(mi_lista, nuevos_elementos, after = length(mi_lista))
mi_lista
[[1]]
[1] 1

[[2]]
[1] 2

[[3]]
[1] 3

[[4]]
[1] 4

[[5]]
[1] 5

[[6]]
[1] 6

3.3 Concatenación y repetición

usando append(), debido a que el operador “+” no se pueden utilizar para concatenar listas en R

lista1 <- list(1, 2, 3)
lista2 <- list(4, 5, 6)

concatenada <- append(lista1, lista2)
concatenada
[[1]]
[1] 1

[[2]]
[1] 2

[[3]]
[1] 3

[[4]]
[1] 4

[[5]]
[1] 5

[[6]]
[1] 6

3.4 Actualizar la lista

  • Por indexacion:
# Crear una lista
mi_lista <- list("Juan", 30, "México")

# Mostrar la lista original
print(mi_lista)
[[1]]
[1] "Juan"

[[2]]
[1] 30

[[3]]
[1] "México"
# Actualizar la edad (índice 2)
mi_lista[[2]] <- 31

# Mostrar la lista actualizada
print(mi_lista)
[[1]]
[1] "Juan"

[[2]]
[1] 31

[[3]]
[1] "México"
  • Utilizando el operador “$”
# Crear una lista
mi_lista <- list(nombre = "Juan", edad = 30, ciudad = "México")

# Mostrar la lista original
print(mi_lista)
$nombre
[1] "Juan"

$edad
[1] 30

$ciudad
[1] "México"
# Actualizar la edad
mi_lista$edad <- 31

# Mostrar la lista actualizada
print(mi_lista)
$nombre
[1] "Juan"

$edad
[1] 31

$ciudad
[1] "México"

3.5 Eliminar un elemento de la lista

En R, no existe una función remove() o pop() incorporada para eliminar elementos de una lista directamente. Para eliminar un elemento de una lista, utilizaremos la función NULL para asignar un valor nulo al elemento que deseas eliminar.

# Crear una lista
mi_lista <- list(nombre = "moises", edad = 30, ciudad = "peru")

# Mostrar la lista original
print(mi_lista)
$nombre
[1] "moises"

$edad
[1] 30

$ciudad
[1] "peru"
# Eliminar el elemento "edad" asignándole NULL
mi_lista$edad <- NULL

# Mostrar la lista después de eliminar "edad"
print(mi_lista)
$nombre
[1] "moises"

$ciudad
[1] "peru"

3.6 Comprobar la pertenencia de un elemento

puedes comprobar la pertenencia de un elemento en un vector, lista o conjunto utilizando el operador %in%.

# Crear una lista
mi_lista <- list(a = 1, b = 2, c = 3, d = 4)

# Comprobar si la clave 'c' está en la lista
esta_presente <- 'c' %in% names(mi_lista)

# Imprimir el resultado
print(esta_presente)  # Esto imprimirá TRUE
[1] TRUE

3.7 Ordenar los elementos de la lista

utilizar la función “sort()” para ordenar los elementos de una lista en orden ascendente.

# Crear una lista con elementos numéricos
mi_lista <- list(3, 1, 4, 2, 5)

# Ordenar la lista
mi_lista_ordenada <- sort(unlist(mi_lista))

# Imprimir la lista ordenada
print(mi_lista_ordenada)
[1] 1 2 3 4 5

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

  • Longitud de una lista:
# Crear una lista
mi_lista <- list(1, 2, 3, 4, 5)

# Obtener la longitud de la lista
longitud <- length(mi_lista)

# Imprimir la longitud
print(longitud)
[1] 5
  • Recuento de un elemento en una lista:
# Crear una lista con elementos repetidos
mi_lista <- list(1, 2, 2, 3, 3, 3)

# Elemento que deseamos contar
elemento_a_contar <- 2

# Contar cuántas veces aparece el elemento
recuento <- sum(unlist(mi_lista) == elemento_a_contar)

# Imprimir el recuento
print(recuento)
[1] 2

3.9 Corte de lista

# Crear la lista
lista_6 <- c("R", "S", "T", "U", "D", "I", "O")

# Obtener el segmento de lista desde el primer índice hasta el quinto índice
segmento_lista <- lista_6[1:5]

# Imprimir el segmento de lista
print(segmento_lista)
[1] "R" "S" "T" "U" "D"
# Crear la lista
lista_6 <- c("R", "S", "T", "U", "D", "I", "O")

# Obtener el segmento de lista desde el primer índice hasta el final de la lista
segmento_lista <- lista_6[2:length(lista_6)]

# Imprimir el segmento de lista
print(segmento_lista)
[1] "S" "T" "U" "D" "I" "O"
# Crear la lista
lista_6 <- c("R", "S", "T", "U", "D", "I", "O")

# Obtener el segmento de lista desde el principio hasta el tercer elemento
segmento_lista <- lista_6[1:3]

# Imprimir el segmento de lista
print(segmento_lista)
[1] "R" "S" "T"
# Crear la lista
lista_6 <- c("R", "S", "T", "U", "D", "I", "O")

# Crear un vector de índices con un paso de 2
indices <- seq(from = 1, to = length(lista_6), by = 2)

# Obtener el segmento de lista con un paso de 2
segmento_lista <- lista_6[indices]

# Imprimir el segmento de lista
print(segmento_lista)
[1] "R" "T" "D" "O"