如何列表中的所有元素追加有效R中

问题描述:

所以,我有是可变长度的整数向量元素列表...可以复制这样如何列表中的所有元素追加有效R中

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在一台普通的计算机上无法处理这个问题,唯一的解决办法是将这个列表分成不同的部分?

+1

你试过'不公开(X,use.names = FALSE)'。 'unlist'是相当快的,但如果列表元素的数量太大,拆分过程可能会更好 – akrun

+0

omg ...我怎么能忘记unlist的存在......谢谢 – Felipe

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

unlist(x, use.names=FALSE) 
+1

替代品是'rapply(x, c)'和'c(x,递归= T)'但你的速度更快! –