R 有没有一种方法可以将具有可变行数的列表组合到一个数据帧中
如果存在数量不等的行向量列表(所有向量都有3列),如下所示: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
>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
fromdata.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