2013-09-27 109 views
0

讓我們說我想創建一個列表,其中每個元素是一個整數向量。創建一個整數向量列表

讓我們說我有,

a = c(1,2,3,4) 
b = c(7,9,10,3) 
d = c(90.2,43.1,54.2,12.3) 

而且我想一個列表,其中列表中的元素1: c(1,7,90.2) 第二個因素是, c(2,9,43.1), 第三個要素是, c(3,10,54.2) , 和第四個元素是, c(4,3,12.3)

如果我這樣做,

my.list = list(a=a,b=b,d=d) 

給我我想要的轉置。有沒有直接的方法來達到這樣的目標?

我需要一個列表,因爲我想使用mclapply函數,並且該函數僅將列表作爲輸入,或者(如果給定的數據幀)將它們強制爲非期望的列表結構。

請注意,在我的程序中,這個向量非常龐大,4億條左右。我正在尋找一種快速有效的方式來做到這一點。謝謝!

+0

什麼你的意思是「轉置」列表?你想要將數據存儲爲列嗎?如果是這樣,那麼按照@tcash的建議,你應該使用'data.frame's(但是跳過第二個'apply'步驟) –

+0

如果你需要區分整數和數字(浮點)列向量,那麼你必須按照原樣處理列表(或數據幀),而不進行轉置。如果這種區分不相關,那麼你應該使用數字矩陣來代替,並使用函數't()'來轉置它。 –

+0

嗨,謝謝,我無法使用data.frame,因爲稍後我將使用mclapply,並且mclapply只將列表作爲輸入。 – Dnaiel

回答

2
kk<-Map(function(x,y,w) c(x,y,w),a,b,d) 
> kk[1] 
[[1]] 
[1] 1.0 7.0 90.2 

或者只是:

kk<-Map(`c`,a,b,d) 
> kk[1] 
[[1]] 
[1] 1.0 7.0 90.2 
+1

+1 - 也可概括爲'do.call(Map,c(c,my.list))' – flodel

1

將您的向量到一個data.frame

adf<-data.frame(a=a, b=b, d=d) 

然後使用apply把每一行到一個列表元素:

apply(adf, 1, function(x) list(x)) 
+0

謝謝,如果我的媒介約爲5億個元素,這是否有效? – Dnaiel

+0

嗨,我不確定這是否是最好的方式去做這件事。 –

相關問題