2  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 paréntesis (), antecedidos por la funcnion c ,que sirve para asignarlos como vecto, o list y separarlos con una coma.

Por ejemplo, a = () representa una lista vacía y mi_lista = list(1,2,3,4,5). Aquí mi_lista hay una lista de números del 1 al 5.

# Ejemplo
mi_lista <- list(1, 2, 3, 4, 5)
frutas <- c("manzana","naranja","mango")
paste(mi_lista)
[1] "1" "2" "3" "4" "5"
cat(frutas)
manzana naranja mango

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 índice de ese elemento.

mi_lista2 = c(1,2,3,4,"Cinco",6)
# primer elemento de la lista @ índice => [1]
primer <- mi_lista2[[1]]
segundo <- mi_lista2[[1]]

cat("1er elemento de la lista = ", primer )
1er elemento de la lista =  1
cat("2do elemento de la lista = ", segundo)
2do elemento de la lista =  1

2.2 Agregar elemento(s) en la lista

Para agregar valor o elemento a la lista de R, tenemos la función append(value); append() agregará el valor al final de la lista de R

mi_lista2 = c(1,2,3,4,"Cinco",6)
cat("Lista inicial:",mi_lista2)
Lista inicial: 1 2 3 4 Cinco 6
# Agregar
mi_lista_nueva <- append(mi_lista2, "Nuevo elemento")
cat("Lista nueva:",mi_lista_nueva)
Lista nueva: 1 2 3 4 Cinco 6 Nuevo elemento
# Insert
mi_lista2[[2]] <- 80
cat("lista actualizada agregando un nuevo elemento en el segundo lugar :",mi_lista2)
lista actualizada agregando un nuevo elemento en el segundo lugar : 1 80 3 4 Cinco 6

2.3 Concatenación y repetición

Para concatenar dos listas de R, podemos usar la funcion append o unir los mediante coma en una nueva función usando el operador c(). Para usar repetición usamos la función rep().

#Ejemplo
lista3 <- c(2,4,6,8,10)
lista4<- c(1,3,5,7)
numeros <- c(lista3, lista4)

cat(numeros)
2 4 6 8 10 1 3 5 7
# Usando la función 'append'
concatenacion_append <- append(lista3, lista4)
cat("Concatenación usando append:", concatenacion_append)
Concatenación usando append: 2 4 6 8 10 1 3 5 7
# Repetición de una lista en R
repetir_lista <- rep(lista3, times = 3)
cat("Repetición de la lista:", repetir_lista)
Repetición de la lista: 2 4 6 8 10 2 4 6 8 10 2 4 6 8 10

2.4 Actualizar la lista de R

Usando la indexación, podemos actualizar el valor indexado especificado en una lista.

numeros <- c(1,2,3,4,5,6)
numeros[1] = 22
cat(numeros)
22 2 3 4 5 6
# Actualizar el valor de la posición 5 con 50
numeros[4]=50
numeros
[1] 22  2  3 50  5  6

2.5 Eliminar un elemento de la lista de R

Las listas de R tienen funciones remove()y pop() eliminan un elemento de la lista.

$NULL: Toma un valor o un objeto de lista como argumento y elimina ese elemento de la lista.

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

paste(numeros)
[1] "1" "2" "3" "5" "6"
# Crear una lista
mi_lista <- list(a = 1, b = 2, c = 3)

# Crear una nueva lista excluyendo el elemento en la posición "b"
mi_lista <- mi_lista[-which(names(mi_lista) == "b")]
paste(mi_lista)
[1] "1" "3"

2.6 Recorrer una lista

Al utilizar el operador ‘in’, podemos verificar si algún valor está presente en la lista o no. Si el valor existe en la lista, devolverá “True”.

# Ejemplo
frutas  <- c("fresa", "papaya", "pina")
for (elemento in frutas) 
print(elemento)
[1] "fresa"
[1] "papaya"
[1] "pina"

2.7 Aplicar función

resultados <- lapply(frutas, function(x) paste("Valor:", x))
resultados
[[1]]
[1] "Valor: fresa"

[[2]]
[1] "Valor: papaya"

[[3]]
[1] "Valor: pina"

2.8 Concatenación

lista1 <-list(fruta="pera",precio =12)
paste(lista1)
[1] "pera" "12"  

2.9 Corte de lista

La división de listas es una forma práctica de obtener el subconjunto de una lista o una porción de una lista y se basa en la indexación.


Sintaxis:list[start:stop:step]

start: El objeto de segmento comenzará desde este índice. stop: El objeto de segmento se detendrá en este índice, lo que significa que el valor en este índice no se incluirá en un segmento devuelto de la lista. step: El paso de división determina el incremento de un índice a otro índice. El valor predeterminado es 1.

lista_6 <- c("P","Y","T","H","O","N")

# lista_6[1:5] => proporciona un segmento de lista desde el primer índice hasta el quinto índice
cat(lista_6[1:5])
P Y T H O