¿Cuál es la diferencia entre dataframe y lista en R? La que debe usarse cuando? Que es más fácil de recorrer?

Problema exacto: tengo a primera tienda 3 elementos de la cadena como «a», «b», «c». Posteriormente, para cada una de estas, necesito anexar 3 más elementos; por ejemplo, «un» tengo que añadir «a1», «a2», «a3». Más tarde tengo que usar bucles for anidados para acceder a estos elementos.

Así que estoy confundido utilizar dataframe o una lista, o algún otro tipo de datos, en la que podía almacenar en primer lugar y, a continuación, append (tipo de cada columna)?

Actualmente estoy recibiendo errores, como «número de elementos a sustituir no es un múltiplo de reemplazo longitud»

  • Yo creo que estos pueden ayudar.. r-tutor.com/r-introduction/data-frame y r-tutor.com/r-introduction/list
  • Era realmente tan mala pregunta? Soy un newbee en R y que viene de java y c#, este lenguaje de scripting que parecía difícil…:(
  • La pregunta en sí no es tan mala. Es demasiado genérico. Si usted quiere una solución a su problema específico, tendrás que nos presentan con un mínimo reproducible ejemplo, como se explica here. Para que, por favor, hacer una nueva pregunta. Podemos dejar esto aquí como referencia.
  • Todavía parece un claro de lo que usted está tratando de lograr, aunque le da información sobre cómo se están tratando de lograrlo. En R, la mejor manera de responder a un problema no es siempre la forma en que se podría pensar, por lo que más de información sería de gran ayuda. Bienvenido a ASÍ.
  • Gracias por tu consejo. Publicaremos la nueva pregunta de pronto..
  • Gracias también..

InformationsquelleAutor ShazSimple | 2013-04-09

2 Comentarios

  1. 112

    La cuestión no es tan estúpido como algunas personas piensan que es. Yo sé un montón de personas que luchan con la diferencia, y qué uso se donde. Para resumir :

    Listas son, con mucho, el más flexible de estructura de datos en R. Que puede ser visto como una colección de elementos sin ningún tipo de restricción en la clase, la longitud o la estructura de cada elemento. La única cosa que usted necesita tomar cuidado de, es que no se dan dos elementos con el mismo nombre. Que podría causar mucha confusión, y R no da errores de que:

    > X <- list(a=1,b=2,a=3)
    > X$a
    [1] 1

    De los marcos de datos están listas, pero tienen algunas restricciones:

    • usted no puede utilizar el mismo nombre para dos variables diferentes
    • todos los elementos de un marco de datos son los vectores
    • todos los elementos de un marco de datos tienen igual longitud.

    Debido a estas restricciones y la resultante de dos dimensiones de la estructura, de los marcos de datos puede imitar a la algunos de los comportamientos de las matrices. Puede seleccionar filas y hacer operaciones sobre las filas. Usted no puede hacer eso con las listas, como una fila es indefinido no.

    Todo esto implica que se debe utilizar una estructura de datos para cualquier conjunto de datos que se ajusta en la que dos dimensiones de la estructura. Esencialmente, el uso de los marcos de datos para cualquier conjunto de datos, donde una columna coincide con una variable y una fila coincide con una única observación en el sentido amplio de la palabra. Para todas las demás estructuras, listas son el camino a seguir.

    Tenga en cuenta que si desea una estructura anidada, usted tiene que utilizar las listas. Como elementos de una lista pueden ser listas, se pueden crear muy flexible objetos estructurados.

    • Pregunta de seguimiento : tengo tres enormes tramas de datos y tengo que realizar un número uniforme de funciones en ellos. Debería poner en una lista y lapply o debo mantenerlos separados? Que uno va a tomar menos de peaje en mi memoria y es menos probable que libre de mi equipo?
    • Que debo comprobar esto, pero sospecho que el cuello de botella sería la creación de la modificación de la lista de lapply. Usted mismo puede comprobar con Rprofmem y tracemem si quieres.
  2. 0

    Fíjate en el ejemplo:
    Si utiliza aplicar en lugar de sapply para obtener la clase –

    apply(iris,2,class) #  function elements are rows or columns
    Sepal.Length  Sepal.Width Petal.Length  Petal.Width      Species 
    "character"  "character"  "character"  "character"  "character" 
    
    sapply(iris,class) # function elements are variables
    Sepal.Length  Sepal.Width Petal.Length  Petal.Width      Species 
    "numeric"    "numeric"    "numeric"    "numeric"     "factor" 

Dejar respuesta

Please enter your comment!
Please enter your name here