/ / Conversion étrange de liste en structure de données dans R - r, liste, structure de données, conversion de type

Conversion étrange de liste en image de données en R - r, liste, dataframe, conversion de type

J'ai une liste que j'ai créée à partir d'une boucle for et qui ressemble à ceci: entrer la description de l'image ici

J'ai essayé de le convertir en une base de données en utilisant le code:

dflist<- as.data.frame(mylist)

Mais mon dataframe ressemble à ceci maintenant: entrer la description de l'image ici

Je sais que j'ai probablement mal créé ma liste, mais je pense que c'est toujours récupérable si je dois juste convertir les nombres en un bloc de données correctement.

Mon objectif final est de tracer les nombres en fonction de leur index (1-30) et je pensais que créer un cadre de données d'abord pour le nettoyer puis tracer serait utile. Toute aide sera grandement appréciée. Je vous remercie.

Réponses:

5 pour la réponse № 1

Les données présentées sont un list. On peut utiliser unlist et créer un data.frame. Basé sur l’image montrée dans le post d’OP, chaque list élément avoir un length de 1. En faisant unlist, nous convertissons le list à vector et ensuite envelopper avec data.frame.

data.frame(ind= seq_along(lst), Col1= as.numeric(unlist(lst)))

Ou une autre option serait stack après avoir nommé le list éléments

df1 <- transform(stack(setNames(lst, seq_along(lst))),
values = as.numeric(values))

Il donne un jeu de données à deux colonnes. De cela, nous pouvons faire la plotting


Concernant l’approche du PO concernant les appels as.data.frame directement sur le list, cela fonctionne différemment car il fait appel à as.data.frame.list. Par exemple, si nous faisons as.data.frame sur un vector, il utilise as.data.frame.vector

as.data.frame(1:5)
# 1:5
#1   1
#2   2
#3   3
#4   4
#5   5

Mais si on appelle as.data.frame.list

as.data.frame.list(1:5)
#  X1L X2L X3L X4L X5L
#1   1   2   3   4   5

nous obtenons un data.frame avec "n" colonnes (basé sur la longueur du vecteur).

Supposons que nous fassions de même sur un list

as.data.frame(as.list(1:5))
#  X1L X2L X3L X4L X5L
#1   1   2   3   4   5

Il utilise le as.data.frame.list. Pour obtenir la liste complète des methods de as.data.frame,

methods("as.data.frame")
#[1] as.data.frame.aovproj*        as.data.frame.array
# [3] as.data.frame.AsIs            as.data.frame.character
# [5] as.data.frame.chron*          as.data.frame.complex
# [7] as.data.frame.data.frame      as.data.frame.data.table*
# [9] as.data.frame.Date            as.data.frame.dates*
#[11] as.data.frame.default         as.data.frame.difftime
#[13] as.data.frame.factor          as.data.frame.ftable*
#[15] as.data.frame.function*       as.data.frame.grouped_df*
#[17] as.data.frame.idf*            as.data.frame.integer
#[19] as.data.frame.ITime*          as.data.frame.list      <-------
#[21] as.data.frame.logical         as.data.frame.logLik*
#[23] as.data.frame.matrix          as.data.frame.model.matrix
#[25] as.data.frame.noquote         as.data.frame.numeric
#[27] as.data.frame.numeric_version as.data.frame.ordered
#[29] as.data.frame.POSIXct         as.data.frame.POSIXlt
#[31] as.data.frame.raw             as.data.frame.rowwise_df*
#[33] as.data.frame.table           as.data.frame.tbl_cube*
#[35] as.data.frame.tbl_df*         as.data.frame.tbl_dt*
#[37] as.data.frame.tbl_sql*        as.data.frame.times*
#[39] as.data.frame.ts              as.data.frame.vector