Listas

Dentro de los objetos de R las listas se puede pensar como un vector donde, cada elemento es un objeto y estos pueden ser de tipos totalmente diferente. Conjunto de vectores

li<-as.list(as.list(seq(1,50, 4)))   # Convierte una lista una repetición de  de 1 a 50 de 4 en 4

li
## [[1]]
## [1] 1
## 
## [[2]]
## [1] 5
## 
## [[3]]
## [1] 9
## 
## [[4]]
## [1] 13
## 
## [[5]]
## [1] 17
## 
## [[6]]
## [1] 21
## 
## [[7]]
## [1] 25
## 
## [[8]]
## [1] 29
## 
## [[9]]
## [1] 33
## 
## [[10]]
## [1] 37
## 
## [[11]]
## [1] 41
## 
## [[12]]
## [1] 45
## 
## [[13]]
## [1] 49
# ... 

length(li)
## [1] 13
# Accediendo a elementos de una lista

li[[1]]
## [1] 1
li[[1]]<-"hola"
li[[4]]<-FALSE
li[[5]]<-pi


li
## [[1]]
## [1] "hola"
## 
## [[2]]
## [1] 5
## 
## [[3]]
## [1] 9
## 
## [[4]]
## [1] FALSE
## 
## [[5]]
## [1] 3.141593
## 
## [[6]]
## [1] 21
## 
## [[7]]
## [1] 25
## 
## [[8]]
## [1] 29
## 
## [[9]]
## [1] 33
## 
## [[10]]
## [1] 37
## 
## [[11]]
## [1] 41
## 
## [[12]]
## [1] 45
## 
## [[13]]
## [1] 49

Listas con valores de varios tipos y con nombres de elementos

# ? list
mi.lista <- list(a = 1:3, b = c("hola", "adiós"))
mi.lista$z <- matrix(1:4, 2, 2)

mi.lista
## $a
## [1] 1 2 3
## 
## $b
## [1] "hola"  "adiós"
## 
## $z
##      [,1] [,2]
## [1,]    1    3
## [2,]    2    4
mi.lista$a
## [1] 1 2 3
mi.lista$b
## [1] "hola"  "adiós"
mi.lista$z
##      [,1] [,2]
## [1,]    1    3
## [2,]    2    4
mi.lista$z[1,]  # El renglón uno de la lista de nombre de elemento z
## [1] 1 3
mi.lista$z[,2]  # Todos los renglones de la columan 2
## [1] 3 4

creando una lista con enfoque práctico

mi.lista <- list(hombre = "Pedro", mujer = "María", casados = TRUE, numero.hijos = 4, edad.hijos = c(4, 7, 9, 2), nombre.hijos=c('Hugo', 'Paco', 'Luis', 'Mary'))

mi.lista
## $hombre
## [1] "Pedro"
## 
## $mujer
## [1] "María"
## 
## $casados
## [1] TRUE
## 
## $numero.hijos
## [1] 4
## 
## $edad.hijos
## [1] 4 7 9 2
## 
## $nombre.hijos
## [1] "Hugo" "Paco" "Luis" "Mary"
mi.lista$hombre           # [1]
## [1] "Pedro"
mi.lista$mujer            # [2]
## [1] "María"
mi.lista$casados          # [3]
## [1] TRUE
mi.lista$numero.hijos     # [4] 
## [1] 4
mi.lista$edad.hijos       # [5]
## [1] 4 7 9 2
mi.lista$nombre.hijos     # [6]
## [1] "Hugo" "Paco" "Luis" "Mary"
# Acceesando datos a trav[es de corchetes []
mi.lista[c("hombre", "numero.hijos")]
## $hombre
## [1] "Pedro"
## 
## $numero.hijos
## [1] 4
mi.lista[c("hombre", "mujer", "casados")]
## $hombre
## [1] "Pedro"
## 
## $mujer
## [1] "María"
## 
## $casados
## [1] TRUE
mi.lista[c(1,4)]   # El vector 1 y 4
## $hombre
## [1] "Pedro"
## 
## $numero.hijos
## [1] 4
mi.lista[c(-1,-4)]  # No mostrar ni el 1 ni el 4
## $mujer
## [1] "María"
## 
## $casados
## [1] TRUE
## 
## $edad.hijos
## [1] 4 7 9 2
## 
## $nombre.hijos
## [1] "Hugo" "Paco" "Luis" "Mary"