R 有没有一种方法可以将具有可变行数的列表组合到一个数据帧中

R 有没有一种方法可以将具有可变行数的列表组合到一个数据帧中,r,R,如果存在数量不等的行向量列表(所有向量都有3列),如下所示: >typicalList [[1]] col1 col2 col3 1 12 10 ABC 2 54 87 DEF [[2]] col1 col2 col3 1 64 9 GH

如果存在数量不等的行向量列表(所有向量都有3列),如下所示:

>typicalList

[[1]]
   col1          col2             col3
1   12            10              ABC
2   54            87              DEF

[[2]]
   col1          col2             col3
1    64            9             GHI
2    59            6             JKL
3    43            4             PST
newColumn col1     col2       col3
1          12        10       ABC
1          54        87       DEF
2          64        9        GHI
2          59        6        JKL
2          43        4        PST
是否可以从上面的列表中获得一个数据帧,其中包含一个名为
newColumn
的新列,如下所示:

>typicalList

[[1]]
   col1          col2             col3
1   12            10              ABC
2   54            87              DEF

[[2]]
   col1          col2             col3
1    64            9             GHI
2    59            6             JKL
3    43            4             PST
newColumn col1     col2       col3
1          12        10       ABC
1          54        87       DEF
2          64        9        GHI
2          59        6        JKL
2          43        4        PST
使用了ldply(typicallist,rbind),但它分割了原始列表中属于向量的所有行,在数据帧中给出了5条独立记录。是否可以使用上面这样的数据框(通过
newColumn
)字段表明前两条记录来自列表的第一个向量,其余三条来自第二个向量?有没有更好的方法在R中实现这一点

资料


typicalList我们可以使用
idcol
参数的
rbindlist
from
data.table

library(data.table)
rbindlist(typicalList, idcol = "newColumn")
#   newColumn col1 col2 col3
#1:         1   12   10  ABC
#2:         1   54   87  DEF
#3:         2   64    9  GHI
#4:         2   59    6  JKL
#5:         2   43    4  PST

或者使用
dplyr中的
bind_行
.id

library(dplyr)
bind_rows(typicalList, .id = "newColumn")
#  newColumn col1 col2 col3
#1         1   12   10  ABC
#2         1   54   87  DEF
#3         2   64    9  GHI
#4         2   59    6  JKL
#5         2   43    4  PST
do.call('rbind',Map(函数(x,y){x$newColumn