Saltar al contenido principal
LibreTexts Español

4.9: Listas

  • Page ID
    151430
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \) \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)\(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\) \(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\)\(\newcommand{\AA}{\unicode[.8,0]{x212B}}\)

    El siguiente tipo de datos que quiero mencionar son las listas. Las listas son una estructura de datos extremadamente fundamental en R, y a medida que comiences a hacer la transición de un usuario novato a un usuario de R experto, usarás listas todo el tiempo. No uso listas muy a menudo en este libro, no directamente, pero la mayoría de las estructuras de datos avanzadas en R se construyen a partir de listas (por ejemplo, los marcos de datos son en realidad un tipo específico de lista). Debido a que las listas son muy importantes para cómo R almacena las cosas, es útil tener una comprensión básica de ellas. Bien, entonces, ¿qué es una lista, exactamente? Al igual que los marcos de datos, las listas son solo “colecciones de variables”. Sin embargo, a diferencia de los marcos de datos —que básicamente se supone que parecen una bonita tabla “rectangular” de datos— no hay restricciones sobre qué tipo de variables incluimos, y ningún requisito de que las variables tengan alguna relación particular entre sí. Para entender lo que esto realmente significa, lo mejor que podemos hacer es crear una lista, que podemos hacer usando la función list (). Si tecleo esto como mi comando:

    Dan <- list( age = 34,
                nerd = TRUE,
                parents = c("Joe","Liz") 
    )

    R crea una nueva variable de lista llamada Dan, que es un paquete de tres variables diferentes: edad, nerd y padres. Observe, que la variable padres es más larga que las demás. Esto es perfectamente aceptable para una lista, pero no sería para un marco de datos. Si ahora imprimimos la variable, puede ver la forma en que R almacena la lista:

    print( Dan )
    
    ## $age
    ## [1] 34
    ## 
    ## $nerd
    ## [1] TRUE
    ## 
    ## $parents
    ## [1] "Joe" "Liz"

    Como habrás adivinado de esos símbolos $ en todas partes, las variables se almacenan exactamente de la misma manera que son para un marco de datos (nuevamente, esto no es sorprendente: los marcos de datos son un tipo de lista). Así que (espero) te quedarás completamente dessorprendido y probablemente bastante aburrido cuando te diga que puedes extraer las variables de la lista usando el operador $, así:

    Dan$nerd
    
    ## [1] TRUE

    Si necesitas agregar nuevas entradas a la lista, la forma más fácil de hacerlo es volver a usar $, como lo ilustra el siguiente ejemplo. Si tecleo un comando como este

    Dan$children <- "Alex"

    entonces R crea una nueva entrada al final de la lista llamada hijos, y le asigna un valor de “Alex”. Si ahora tuviera que imprimir () esta lista, verías una nueva entrada en la parte inferior de la impresión. Por último, en realidad es posible que las listas contengan otras listas, así que es muy posible que termine usando un comando como Dan$Children$age para averiguar cuántos años tiene mi hijo. O podría intentar recordarlo yo mismo supongo.


    This page titled 4.9: Listas is shared under a CC BY-SA 4.0 license and was authored, remixed, and/or curated by Danielle Navarro via source content that was edited to the style and standards of the LibreTexts platform; a detailed edit history is available upon request.