List 将列表矩阵转换为正则矩阵

List 将列表矩阵转换为正则矩阵,list,r,matrix,List,R,Matrix,以下面的代码为例: foo <- list() foo[[1]] <- list(a=1, b=2) foo[[2]] <- list(a=11, b=22) foo[[3]] <- list(a=111, b=222) result <- do.call(rbind, foo) result[,'a'] foo一个可能的解决方案如下(但我对替代方案感兴趣): new.resultdo.call-on列表非常优雅、快速。事实上,do.call(rbind,my.l

以下面的代码为例:

foo <- list()
foo[[1]] <- list(a=1, b=2)
foo[[2]] <- list(a=11, b=22)
foo[[3]] <- list(a=111, b=222)
result <- do.call(rbind, foo)
result[,'a']

foo一个可能的解决方案如下(但我对替代方案感兴趣):


new.resultdo.call-on列表非常优雅、快速。事实上,do.call(rbind,my.list)曾经在我需要合并一个庞大的列表时救了我一命。这是迄今为止最快的解决方案

要解决您的问题,可以采取以下措施:

do.call(rbind, lapply(foo, unlist))


> result.2 <- do.call(rbind, lapply(foo, unlist))
> result.2
       a   b
[1,]   1   2
[2,]  11  22
[3,] 111 222
> result.2[, 'a']
[1]   1  11 111
> 
do.call(rbind,lappy(foo,unlist))
>结果,结果
a b
[1,]   1   2
[2,]  11  22
[3,] 111 222
>结果.2[,'a']
[1]   1  11 111
> 

我希望
do.call
+
rbind
很快。你有没有试过在列表中使用10000个数据帧@哈德利:我似乎记得在一次计算统计课上学习到,这是绑定列表的最快方法(在多次尝试失败之后)。也许我记错了。什么更快?如果你自己仔细写的话,你可以快4倍左右
rbind.fill
在plyr的下一个发行版中,将结合我最新的努力。这是一个非常有趣的讨论;我发现了这个比较:。我对do.call的信心已经破灭了!谢谢你,哈德利。
do.call(rbind, lapply(foo, unlist))


> result.2 <- do.call(rbind, lapply(foo, unlist))
> result.2
       a   b
[1,]   1   2
[2,]  11  22
[3,] 111 222
> result.2[, 'a']
[1]   1  11 111
>