Quelle est la différence entre dataframe et list in R
? Lequel devrait être utilisé quand? Lequel est le plus facile à boucler?
Problème exact: Je dois d'abord stocker 3 éléments de chaîne tels que "a", "b", "c". Plus tard, pour chacun d’eux, je dois ajouter 3 autres éléments; par exemple, pour "a", je dois ajouter "a1", "a2", "a3". Plus tard, je dois utiliser des boucles for imbriquées pour accéder à ces éléments.
Donc, je suis confus d'utiliser dataframe ou liste ou un autre type de données, dans lequel je pourrais d'abord stocker puis ajouter (type de chaque colonne)?
Je reçois actuellement des erreurs du type "le nombre d'éléments à remplacer n'est pas un multiple de la longueur de remplacement"
La question n’est pas aussi stupide que certains le pensent. Je connais beaucoup de gens qui luttent avec cette différence et ce qu'il faut utiliser où. Résumer :
Les listes constituent de loin la structure de données la plus flexible de R. Elles peuvent être considérées comme un ensemble d’éléments sans aucune restriction quant à la classe, la longueur ou la structure de chaque élément. La seule chose dont vous devez vous occuper est que vous ne donnez pas le même nom à deux éléments. Cela pourrait causer beaucoup de confusion, et R ne donne pas d'erreur pour cela:
> X <- list(a=1,b=2,a=3)
> X$a
[1] 1
Les trames de données sont aussi des listes, mais elles ont quelques restrictions:
En raison de ces restrictions et de la structure bidimensionnelle qui en résulte, les trames de données peuvent imiter certains comportements des matrices. Vous pouvez sélectionner des lignes et effectuer des opérations sur des lignes. Vous ne pouvez pas faire cela avec des listes, car une ligne n'est pas définie ici.
Tout cela implique que vous deviez utiliser un bloc de données pour tout jeu de données adapté à cette structure bidimensionnelle. Vous utilisez essentiellement des cadres de données pour tout jeu de données où une colonne coïncide avec une variable et une ligne coïncide avec une seule observation au sens large du mot. Pour toutes les autres structures, les listes sont la voie à suivre.
Notez que si vous voulez une structure imbriquée, vous devez utiliser des listes. Comme les éléments d'une liste peuvent être eux-mêmes des listes, vous pouvez créer des objets structurés très flexibles.
Regardez l'exemple: Si vous utilisez apply au lieu de sapply pour obtenir la classe -
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"