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.

  1. Crea una lista muestras_agua con 4 elementos, cada uno representando una muestra de agua.
  2. Cada elemento debe ser una lista con: ID, Localización, pH, Coliformes (número de coliformes).
  3. 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
str(muestras_agua)
## 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

  1. 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.

  2. 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.

  3. 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.
  1. 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.
  1. 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.
  1. 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.