R Listas

Las listas son colecciones de objetos en R, que se pueden usar para almacenar diferentes tipos de datos, como números, cadenas, vectores, otra lista, matrices, data frames, etc. Por supuesto, también pueden contener matrices y funciones.

Las listas son una estructura de datos flexible que puede almacenar y manipular varios tipos de objetos de datos.

Crear listas

En R, para crear una lista se usalist()la función.

En el siguiente ejemplo, creamos una lista que contiene una cadena, un vector y un número:

Ejemplo

list_data <- list("ejemplo", "google", c(11,22,33), 123, 51.23, 119.1)
print(list_data)

Al ejecutar el código anterior, el resultado es:

[[1]]
[1] "ejemplo"

[[2]]
[1] "google"

[[3]]
[1] 11 22 33

[[4]]
[1] 123

[[5]]
[1] 51.23

[[6]]
[1] 119.1

También podemos usarc()la función para crear listas; también podemos usar esta función para combinar varios objetos en una lista, por ejemplo:

my_list <- c(object1, object2, object3)

Ejemplo

# Crear un vector que contiene números
numbers <- c(1, 2, 3, 4, 5)

# Crear un vector que contiene caracteres
characters <- c("apple", "banana", "orange")


# Combinar dos vectores numéricos
merged_vector <- c(numbers, c(6, 7, 8))

# Combinar dos vectores de caracteres
merged_characters <- c(characters, c("grape", "melon"))

Podemos usarnames()la función para nombrar los elementos de la lista:

Ejemplo

# La lista contiene vector, matriz, lista
list_data <- list(c("Google","Ejemplo","Taobao"), matrix(c(1,2,3,4,5,6), nrow = 2),
   list("ejemplo",12.3))

# Asignar nombres a los elementos de la lista
names(list_data) <- c("Sites", "Numbers", "Lists")

# Mostrar la lista
print(list_data)

Al ejecutar el código anterior, el resultado es:

$Sites
[1] "Google" "Ejemplo" "Taobao"

$Numbers
     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6

$Lists
$Lists[[1]]
[1] "ejemplo"

$Lists[[2]]
[1] 12.3

Acceder a las listas

Los elementos de una lista se pueden acceder mediante índices. Si usamos lanames()función para nombrarlos, también podemos acceder a ellos usando los nombres correspondientes:

Ejemplo

# La lista contiene vector, matriz, lista
list_data <- list(c("Google","Ejemplo","Taobao"), matrix(c(1,2,3,4,5,6), nrow = 2),
   list("ejemplo",12.3))

# Asignar nombres a los elementos de la lista
names(list_data) <- c("Sites", "Numbers", "Lists")

# Mostrar la lista
print(list_data[1])

# Acceder al tercer elemento de la lista
print(list_data[3])

# Acceder al primer elemento del vector
print(list_data$Numbers)

Al ejecutar el código anterior, el resultado es:

$Sites
[1] "Google" "Ejemplo" "Taobao"

$Lists
$Lists[[1]]
[1] "ejemplo"

$Lists[[2]]
[1] 12.3


     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6

Manipular elementos de la lista

Podemos realizar operaciones de agregar, eliminar y actualizar en la lista, como en el siguiente ejemplo:

Ejemplo

# La lista contiene vector, matriz, lista
list_data <- list(c("Google","Ejemplo","Taobao"), matrix(c(1,2,3,4,5,6), nrow = 2),
   list("ejemplo",12.3))

# Asignar nombres a los elementos de la lista
names(list_data) <- c("Sites", "Numbers", "Lists")

# Agregar un elemento
list_data[4] <- nuevo elemento
print(list_data[4])

# Eliminar un elemento
list_data[4] <- NULL

# Después de eliminar, la salida es NULL
print(list_data[4])

# Actualizar un elemento
list_data[3] <- reemplacé el tercer elemento
print(list_data[3])

Al ejecutar el código anterior, el resultado es:

[[1]]
[1] "新元素"

$<NA>
NULL

$Lists
[1] "我替换来第三个元素"

Usandoforun bucle para recorrer la lista:

Ejemplo

# Crear una lista que contiene números y caracteres
my_list <- list(1, 2, 3, "a", "b", "c")

# Usar un bucle for para recorrer cada elemento de la lista
for (element in my_list) {
  print(element)
}

En el código anterior, el bucle for recorre cada elemento de la lista my_list en orden y almacena cada elemento en la variable element. Luego, podemos realizar operaciones específicas en cada elemento dentro del cuerpo del bucle, por ejemplo, usar print() para imprimir el valor del elemento.

Al recorrer una lista con un bucle for, en cada iteración se asigna el elemento actual a la variable element. Por lo tanto, dentro del cuerpo del bucle se puede realizar cualquier operación necesaria con element, como cálculos, condiciones, etc.

Es importante tener en cuenta que, al usar un bucle for para recorrer una lista, la variable de bucle element tomará secuencialmente cada elemento de la lista, pero no se puede modificar directamente el elemento de la lista en sí. Si necesita modificar el valor de un elemento de la lista, puede hacerlo mediante su índice, por ejemplomy_list[[index]] <- new_value。

Al ejecutar el código anterior, el resultado es:

[1] 1
[1] 2
[1] 3
[1] "a"
[1] "b"
[1] "c"

Combinar listas

Podemos usarc()la función para combinar varias listas en una lista:

Ejemplo

# Crear dos listas
list1 <- list(1,2,3)
list2 <- list("Google","Ejemplo","Taobao")

# Combinar listas
merged.list <- c(list1,list2)

# Mostrar la lista combinada
print(merged.list)

Al ejecutar el código anterior, el resultado es:

[[1]]
[1] 1

[[2]]
[1] 2

[[3]]
[1] 3

[[4]]
[1] "Google"

[[5]]
[1] "Ejemplo"

[[6]]
[1] "Taobao"

Convertir listas a vectores

Para convertir una lista a un vector, se puede usarunlist()la función. Convertir la lista a un vector facilita las operaciones aritméticas:

Ejemplo

# Crear una lista
list1 <- list(1:5)
print(list1)

list2 <-list(10:14)
print(list2)

# Convertir a vector
v1 <- unlist(list1)
v2 <- unlist(list2)

print(v1)
print(v2)

# Sumar dos vectores
result <- v1+v2
print(result)

Al ejecutar el código anterior, el resultado es:

[[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

Resumen

A continuación se presentan algunas operaciones y funciones comunes de listas en R:

Crear listas:

  • Usarc()función: por ejemplo, list1 <- c(1, 2, 3) crea una lista que contiene 1, 2 y 3.
  • Usarla función list(): por ejemplo, list2 <- list(1, "a", TRUE) crea una lista que contiene elementos de diferentes tipos.

Acceder a elementos de la lista:

  • Usar índices: acceder a los elementos de la lista mediante índices. Por ejemplo, list1
  • Usar nombres de elementos: si los elementos de la lista tienen nombres, se puede acceder a ellos mediante los nombres. Por ejemplo, list3 <- list(a = 1, b = 2) permite acceder a los elementos mediante list3$a y list3$b.

Operaciones con listas:

  • Longitud: use la función length() para obtener la longitud de la lista. Por ejemplo, length(list1) devuelve la longitud de la lista list1.
  • Combinar: use la función c() o la función append() para combinar dos o más listas en una sola. Por ejemplo, list4 <- c(list1, list2) combina las listas list1 y list2.
  • Agregar elementos: use la función c() para agregar elementos a una lista existente. Por ejemplo, list1 <- c(list1, 4) agrega 4 al final de la lista list1.
  • Eliminar elementos: use índices y el operador de índice negativo - para eliminar elementos de la lista. Por ejemplo, list1 <- list1[-2] elimina el segundo elemento de la lista list1.

Bucles sobre listas:

  • Bucle for: use un bucle for para recorrer los elementos de la lista. Por ejemplo,for (element in list1) { ... }recorrer cada elemento de la lista list1.
  • lapply()Función: aplicar una función a cada elemento de la lista y devolver una lista de resultados. Por ejemplo, new_list <- lapply(list1, function(x) x * 2) multiplica cada elemento de la lista list1 por 2.
Otras extensiones