Listas

Podemos entender una lista como un contenedor de objetos que pueden ser de cualquier clase: números, vectores, matrices, funciones, data.frames, incluso otras listas. Una lista puede contener a la vez varios de estos objetos, que pueden ser además de distintas dimensiones.

Creación de listas

Podemos crear listas con la función list(), que acepta un número arbitrario de argumentos. Los elementos de la lista pueden ser cualquier tipo de objeto:

lista <- list(1:3, "Ruben", pi, list(c(-1, -2), -5))
lista
## [[1]]
## [1] 1 2 3
## 
## [[2]]
## [1] "Ruben"
## 
## [[3]]
## [1] 3.141593
## 
## [[4]]
## [[4]][[1]]
## [1] -1 -2
## 
## [[4]][[2]]
## [1] -5

Como con los vectores, podemos dar nombre a los elementos en su construcción, o posteriormente con la ayuda de la función names():

names(lista) <- c("a", "b", "c", "d")
lista
## $a
## [1] 1 2 3
## 
## $b
## [1] "Ruben"
## 
## $c
## [1] 3.141593
## 
## $d
## $d[[1]]
## [1] -1 -2
## 
## $d[[2]]
## [1] -5
la_misma_lista <- list(a = 1:3, b = "Ruben", c = pi, d = list(c(-1, -2), -5))
la_misma_lista
## $a
## [1] 1 2 3
## 
## $b
## [1] "Ruben"
## 
## $c
## [1] 3.141593
## 
## $d
## $d[[1]]
## [1] -1 -2
## 
## $d[[2]]
## [1] -5

Un herramienta muy útil para el trabajo con listas es la función str() que nos muestra su estructura:

str(lista)
## List of 4
##  $ a: int [1:3] 1 2 3
##  $ b: chr "Ruben"
##  $ c: num 3.14
##  $ d:List of 2
##   ..$ : num [1:2] -1 -2
##   ..$ : num -5

Selección de Elementos

Disponemos de tres métodos para seleccionar elementos de una lista, que examinaremos a partir de lista:

lista <- list(a = 1:3, b = "Ruben", c = pi, d = list(c(-1, -2), -5))
  • La notación [] extrae una sublista. El resultado será siempre una lista:
str(lista[1:2])
## List of 2
##  $ a: int [1:3] 1 2 3
##  $ b: chr "Ruben"
str(lista[4])
## List of 1
##  $ d:List of 2
##   ..$ : num [1:2] -1 -2
##   ..$ : num -5

Como con los vectores, podemos seleccionar elementos con un vector de tipo logical, integer o character.

  • La notación [[]] extrae un único componente de la lista. Esto es, elimina un nivel en la jerarquía de la lista:
str(lista[[1]])
##  int [1:3] 1 2 3
str(lista[[4]])
## List of 2
##  $ : num [1:2] -1 -2
##  $ : num -5
str(lista[[4]][1])
## List of 1
##  $ : num [1:2] -1 -2
str(lista[[4]][[1]])
##  num [1:2] -1 -2
  • El operador $ extrae elementos de una lista por medio de su nombre. El funcionamiento es el mismo que con el operador [[]] excepto que no tenemos que utilizar comillas (""):
str(lista$a)
##  int [1:3] 1 2 3
str(lista[["a"]])
##  int [1:3] 1 2 3

La distinción entre [] y [[]] es importante en las listas, puesto que [[]] navega jerárquicamente por la lista, mientras que [] devuelve una sublista. A continuación mostramos una representación visual de las operaciones realizadas en el código anterior:

Selección elementos de una lista, visualmente
Figura1 - Selección elementos de una lista, visualmente

Resumen

  • Creamos listas con la función list().
  • Con la ayuda de la función names() podemos consultar o cambiar los nombres de los elementos.
  • Una función útil para el trabajo con listas es str() que nos muestra su estructura.
  • Hemos analizado los diferentes operadores para seleccionar elementos de una lista.

results matching ""

    No results matching ""