嵌套列表:将其排序为数据帧

lla*_*fin 3 r function list dataframe

我有一个嵌套列表列表.每个嵌套列表的长度都不同.列表中的每个值都有一个分配给它的名称.我想从列表中创建一个数据框,但是对列表进行排序,以便每个值都在数据框中的正确列中.

用英语解释很难,我希望这个示例代码能够解释:

list <- list(1,1:2,1:3)
names(list[[1]]) <- "a"
names(list[[2]]) <- c("c", "a")
names(list[[3]]) <- c("a","c","b")

table <- matrix(NA, nrow = 3, ncol = 3)
colnames(table) <- c("a","b","c")  

> list
[[1]]
a 
1 

[[2]]
c a 
1 2 

[[3]]
a c b 
1 2 3 

> table
      a  b  c
[1,] NA NA NA
[2,] NA NA NA
[3,] NA NA NA  
Run Code Online (Sandbox Code Playgroud)

我想将列表排序到表中,如下所示:

>table
          a  b  c
list[[1]] 1 NA NA
list[[2]] 2 NA  1
list[[3]] 1  3  2
Run Code Online (Sandbox Code Playgroud)

以便列表中值的名称与表中列的名称匹配,然后list[[1]]转到第1行,list[[2]]转到第2行,等等.

任何帮助,将不胜感激.

(附加信息:

我的实际数据集有数万个嵌套列表,最长列表的长度为26.

我在Windows 10上运行32位R 3.2.4)

mto*_*oto 5

我们可以尝试smartbind()gtools包中结合使用do.call().

library('gtools')
do.call("smartbind", list)
#  a  c  b
#1 1 NA NA
#2 2  1 NA
#3 1  2  3
Run Code Online (Sandbox Code Playgroud)

  • 先生,我一直在等待这个答案而不知道它.+1. (2认同)