2015-08-15 88 views
1

所以,我有是可變長度的整數向量元素列表...可以複製這樣如何列表中的所有元素追加有效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

回答

1

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

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

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

相關問題