Chapter 6 Listas
Las listas son una estructura de datos muy versátil en R, que permiten almacenar una colección de elementos. A diferencia de los vectores, una lista puede contener elementos de diferentes tipos, como números, cadenas y hasta otras listas.
En R, las listas pueden contener una amplia variedad de tipos de datos, incluyendo números, vectores, matrices, y data frames. Esto las hace extremadamente versátiles para la gestión de datos complejos.
Ejemplos
- Creación de una Lista
# Creando una lista con diferentes tipos de datos
compleja_lista <- list(
numero = 42,
vector = c(1, 2, 3),
matriz = matrix(c(1, 2, 3, 4), nrow = 2),
data_frame = data.frame(nombre = c("E. coli", "S. aureus"), gram = c("+", "-"))
)
print(compleja_lista)
## $numero
## [1] 42
##
## $vector
## [1] 1 2 3
##
## $matriz
## [,1] [,2]
## [1,] 1 3
## [2,] 2 4
##
## $data_frame
## nombre gram
## 1 E. coli +
## 2 S. aureus -
Para acceder a los elementos de una lista, puedes usar el doble corchete [[ ]] o el operador de dólar $. El doble corchete es útil para acceder a los elementos por su índice, mientras que el operador de dólar se usa con nombres.
Accceso por índice
# Accediendo al vector dentro de la lista
vector_en_lista <- compleja_lista[[2]]
print(vector_en_lista)
## [1] 1 2 3
6.0.1 Acceso por Nombre
# Accediendo al data frame por nombre
data_frame_en_lista <- compleja_lista$data_frame
print(data_frame_en_lista)
## nombre gram
## 1 E. coli +
## 2 S. aureus -
6.1 Ejercicio resuelto
Guarda datos de análisis de diferentes muestras de agua en una lista.
- Crea una lista muestras_agua con 4 elementos, cada uno representando una muestra de agua.
- Cada elemento debe ser una lista con: ID, Localización, pH, Coliformes (número de coliformes).
- Calcula el promedio de coliformes en todas las muestras.
# Crear lista de muestras de agua
muestras_agua <- list(
list(ID = "Muestra1", Localizacion = "Río", pH = 7.2, Coliformes = 150),
list(ID = "Muestra2", Localizacion = "Lago", pH = 6.8, Coliformes = 200),
list(ID = "Muestra3", Localizacion = "Pozo", pH = 7.5, Coliformes = 50),
list(ID = "Muestra4", Localizacion = "Mar", pH = 8.1, Coliformes = 80)
)
muestras_agua
## [[1]]
## [[1]]$ID
## [1] "Muestra1"
##
## [[1]]$Localizacion
## [1] "Río"
##
## [[1]]$pH
## [1] 7.2
##
## [[1]]$Coliformes
## [1] 150
##
##
## [[2]]
## [[2]]$ID
## [1] "Muestra2"
##
## [[2]]$Localizacion
## [1] "Lago"
##
## [[2]]$pH
## [1] 6.8
##
## [[2]]$Coliformes
## [1] 200
##
##
## [[3]]
## [[3]]$ID
## [1] "Muestra3"
##
## [[3]]$Localizacion
## [1] "Pozo"
##
## [[3]]$pH
## [1] 7.5
##
## [[3]]$Coliformes
## [1] 50
##
##
## [[4]]
## [[4]]$ID
## [1] "Muestra4"
##
## [[4]]$Localizacion
## [1] "Mar"
##
## [[4]]$pH
## [1] 8.1
##
## [[4]]$Coliformes
## [1] 80
## List of 4
## $ :List of 4
## ..$ ID : chr "Muestra1"
## ..$ Localizacion: chr "Río"
## ..$ pH : num 7.2
## ..$ Coliformes : num 150
## $ :List of 4
## ..$ ID : chr "Muestra2"
## ..$ Localizacion: chr "Lago"
## ..$ pH : num 6.8
## ..$ Coliformes : num 200
## $ :List of 4
## ..$ ID : chr "Muestra3"
## ..$ Localizacion: chr "Pozo"
## ..$ pH : num 7.5
## ..$ Coliformes : num 50
## $ :List of 4
## ..$ ID : chr "Muestra4"
## ..$ Localizacion: chr "Mar"
## ..$ pH : num 8.1
## ..$ Coliformes : num 80
# Calcular promedio de coliformes
promedio_coliformes <- mean(sapply(muestras_agua, function(x) x$Coliformes))
print(promedio_coliformes)
## [1] 120
6.2 Ejercicios
6.2.1 Ejercicios Propuestos con listas
Crea una lista que contenga al menos cuatro tipos diferentes de datos (incluyendo al menos un vector, una matriz, y un data frame). Luego, escribe código para acceder a cada uno de estos elementos por su índice.
Añade un nuevo elemento a la compleja_lista que sea otra lista conteniendo información relevante a un experimento microbiológico (p.ej., fechas, resultados de crecimiento, tipo de medio de cultivo). Accede a un elemento específico dentro de esta lista anidada.
Almacena datos de producción en experimentos de fermentación.
- Crea una lista fermentacion con 4 elementos, cada uno representando un experimento de fermentación.
- Cada elemento debe ser una lista con: Cepa, Condición, ProducciónEtanol.
- Encuentra la condición con la mayor producción de etanol.
- Mantén un registro de resistencias a antibióticos.
- Crea una lista resistencias con 3 elementos, cada uno representando una bacteria.
- Cada elemento debe ser una lista con: Bacteria, AntibióticosResistentes (vector de nombres de antibióticos).
- Encuentra la bacteria con más resistencias.
- Mantén un registro de ensayos clínicos en una lista.
- Crea una lista ensayos_clinicos con 3 elementos, cada uno representando un ensayo clínico.
- Cada elemento debe ser una lista con: Nombre, Fase, NúmeroPacientes.
- Calcula el total de pacientes involucrados en todos los ensayos clínicos.
- Almacena datos de producción en experimentos de fermentación.
- Crea una lista fermentacion con 4 elementos, cada uno representando un experimento de fermentación.
- Cada elemento debe ser una lista con: Cepa, Condición, ProducciónEtanol.
- Encuentra la condición con la mayor producción de etanol.
Recuerda, el uso efectivo de listas en R puede ayudarte a gestionar y manipular una amplia gama de conjuntos de datos complejos, especialmente útil en campos como la Microbiología.