/ / Conversão estranha de lista para dataframe em R - r, lista, dataframe, conversão de tipo

Conversão estranha de lista para dataframe em R - r, lista, dataframe, conversão de tipo

Eu tenho uma lista que eu criei de um loop for e se parece com isso: insira a descrição da imagem aqui

Eu tentei convertê-lo em um dataframe usando o código:

dflist<- as.data.frame(mylist)

Mas meu dataframe se parece com isso agora: insira a descrição da imagem aqui

Eu sei que provavelmente criei minha lista errada, mas acho que isso ainda pode ser aproveitado se eu precisar converter os números em um dataframe corretamente.

Meu objetivo final é plotar os números em relação ao seu índice (1-30) e pensei em criar um dataframe primeiro para limpá-lo e, em seguida, o gráfico seria útil. Qualquer ajuda seria muito apreciada. Obrigado.

Respostas:

5 para resposta № 1

Os dados mostrados são list. Podemos usar unlist e criar um data.frame. Baseado na imagem mostrada no post do OP, cada list elemento tem um length de 1. Ao fazer unlistnós convertemos o list para vector e depois embrulhe com data.frame.

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

Ou outra opção seria stack depois de nomear o list elementos

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

Dá um conjunto de dados de duas colunas. A partir disso podemos fazer o plottingindo


Quanto à abordagem do OP sobre a chamada as.data.frame diretamente no list, funciona de uma maneira diferente, como exige as.data.frame.list. Por exemplo, se fizermos as.data.frame com um vector, usa as.data.frame.vector

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

Mas se chamarmos as.data.frame.list

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

obtemos um data.frame com colunas "n" (com base no comprimento do vetor).

Suponha que façamos o mesmo em um list

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

Ele usa o as.data.frame.list. Para obter a lista completa de methods do 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