【问题标题】:How to append all the elements of a list efficiently in R如何在R中有效地附加列表的所有元素
【发布时间】:2015-11-08 19:36:30
【问题描述】:

所以,我有一个列表,其中的元素是可变长度的整数向量......它可以像这样复制

N<-1000
x<-list()
for(i in 1:N){
  x[[i]]<-1:sample.int(10,1)
}

但就我而言,我有一个包含一百万个元素的列表,N=1.000.000

我需要附加列表的所有元素以创建一个唯一的向量。我尝试了以下方法,所有这些方法都非常慢,实际上永远不会结束运行,因为在 R 中追加确实效率低下。

library(abind)
abind(x)

还有这个:

y<-integer()
for(i in 1:length(x)){
  y<-append(y,x[[i]])
}

你有什么建议?向量最终将有大约 1000 万个值......所以也许 R 无法在普通计算机中处理这个问题,唯一的解决方案是将列表分成不同的部分?

【问题讨论】:

  • 你试过unlist(x, use.names=FALSE)unlist 相当快,但是如果列表元素的数量太大,拆分进程可能会更好
  • omg...我怎么能忘记unlist的存在...谢谢

标签: r append


【解决方案1】:

如果list元素被命名,我们可以使用unlistuse.names=FALSE

 unlist(x, use.names=FALSE)

【讨论】:

  • 替代品是 rapply(x, c)c(x, recursive=T) 但你的更快!
猜你喜欢
  • 2021-11-14
  • 2013-03-26
  • 2021-01-01
  • 2013-07-06
  • 2015-07-29
  • 2015-10-01
  • 1970-01-01
  • 2011-02-16
  • 2021-02-02
相关资源
最近更新 更多