Capítulo 5 Creación y e indexación de listas
Las tablas son contenedores de información estructurada: las columnas son del mismo tipo, todas tienen la misma longitud, etc. Gran parte de los datos con los que se trabaja habitualmente en R son estructurados, palabra que, en la jerga estadística, significa que admiten una representación tabular.
Sin embargo, cada vez es más habitual trabajar directamente con información desestructurada. Particularmente, en análisis estadísticos y ciencia de datos. Eso justifica el uso de las listas. Las listas pueden definirse como contenedores genéricos de información desestructurada.
Las listas son objetos muy versátiles que mezclan varias cosas y sirven como contenedores genéricos de datos e información. Estas son una ventaja de R, sobre otros lenguajes como Python que no las tienen. Pero pueden llegar a ser objetos muy complejos, difíciles de entender y visualizar.
<- c(1,2,3,4,5,6,7,8,9) # vector numerico
a <- c("Casa", "Carro", "Beca") # vector alfanumerico
b
<- iris[3:25,2:5] # data frame
florecitas
<- list(a, b, florecitas) # una lista con 3 objetos
lista1
str(lista1) # ver la estructura de la lista
## List of 3
## $ : num [1:9] 1 2 3 4 5 6 7 8 9
## $ : chr [1:3] "Casa" "Carro" "Beca"
## $ :'data.frame': 23 obs. of 4 variables:
## ..$ Sepal.Width : num [1:23] 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 3.7 3.4 ...
## ..$ Petal.Length: num [1:23] 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 1.5 1.6 ...
## ..$ Petal.Width : num [1:23] 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 0.2 0.2 ...
## ..$ Species : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...
las listas disponen de un operador para extraer elementos, los dobles corchetes, [[]], que funcionan de manera parecida y análoga a $.
2]] # extrae el objeto b lista1[[
## [1] "Casa" "Carro" "Beca"
3]] [,4] # extrae la columna 4 del objeto 3 lista1[[
## [1] setosa setosa setosa setosa setosa setosa setosa
## [8] setosa setosa setosa setosa setosa setosa setosa
## [15] setosa setosa setosa setosa setosa setosa setosa
## [22] setosa setosa
## Levels: setosa versicolor virginica
3]] [2,] # extrae la fila 2 del objeto 3 lista1[[
## Sepal.Width Petal.Length Petal.Width Species
## 4 3.1 1.5 0.2 setosa
Las listas pueden tambien contener graficas o incluso una lista dentro de la lista.
4]] <- hist(iris$Sepal.Width) # grafica en el campo 4 de la lista lista1[[
# plot(lista1[[4]]) # ver la grafica
5]] <- list(a, b, rnorm(20)) # lista dentro del campo 5 de la lista lista1[[