R中从列表到数据帧的奇怪转换

hop*_*288 3 r list type-conversion dataframe

我有一个我从for循环创建的列表,它看起来像这样: 在此输入图像描述

我尝试使用代码将其转换为数据帧:

dflist<- as.data.frame(mylist)
Run Code Online (Sandbox Code Playgroud)

但我的数据框现在看起来像这样: 在此输入图像描述

我知道我可能创建了我的列表错误但我认为如果我只需要将数字正确地转换为数据帧,这仍然是可以挽救的.

我的最终目标是根据他们的索引(1-30)绘制数字,我想先创建一个数据框来清理它,然后绘图会有所帮助.任何帮助将非常感激.谢谢.

akr*_*run 5

数据显示是list.我们可以使用unlist并创建一个data.frame.基于OP的帖子中显示的图像,每个list元素都有1 length个.通过这样做unlist,我们转换为listto vector然后换行data.frame.

data.frame(ind= seq_along(lst), Col1= as.numeric(unlist(lst)))
Run Code Online (Sandbox Code Playgroud)

或者stack在命名list元素之后的另一种选择

df1 <- transform(stack(setNames(lst, seq_along(lst))),
                 values = as.numeric(values))
Run Code Online (Sandbox Code Playgroud)

它提供了一个两列数据集.从这里我们可以做plot


关于OP关于as.data.frame直接调用list它的方法,它确实以它所要求的不同方式工作as.data.frame.list.例如,如果我们as.data.frame在a上vector,它会使用as.data.frame.vector

as.data.frame(1:5)
# 1:5
#1   1
#2   2
#3   3
#4   4
#5   5
Run Code Online (Sandbox Code Playgroud)

但是,如果我们打电话 as.data.frame.list

as.data.frame.list(1:5)
#  X1L X2L X3L X4L X5L
#1   1   2   3   4   5
Run Code Online (Sandbox Code Playgroud)

我们得到一个带有'n'列的data.frame(基于向量的长度).

假设,我们也是这样做的 list

as.data.frame(as.list(1:5))
#  X1L X2L X3L X4L X5L
#1   1   2   3   4   5
Run Code Online (Sandbox Code Playgroud)

它使用了as.data.frame.list.要获得完整列表methodsas.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  
Run Code Online (Sandbox Code Playgroud)