2013-08-21 91 views
0

我想將不同長度的向量綁定在一起。我查了一下this線程,但是從這個我不清楚如何使用append或cbind來創建一個矩陣/列表。綁定可變長度向量R

舉個例子, 讓我們不同長度的2個隨機向量:

> b<-sample(10,5) 
> d<-sample(10,10) 

他們現在經營cbind會重蹈小載體一切可能,

> cbind(b,d) 
     b d 
[1,] 3 7 
[2,] 5 4 
[3,] 10 3 
[4,] 4 2 
[5,] 6 5 
[6,] 3 8 
[7,] 5 6 
[8,] 10 10 
[9,] 4 9 
[10,] 6 1 

如果我嘗試做追加,

> append(b,d) 
[1] 3 5 10 4 6 7 4 3 2 5 8 6 10 9 1 

它將兩個向量追加到1 。較長的解決方案是將矢量長度保存在不同的矢量中,並使用長度矢量從循環中從該合併矢量中拾取矢量。但有沒有更好的方法來做到這一點?因爲我想把這個更大的矩陣/列表放入一個函數中,如果我不使用這種基於長度矢量的方法,這將變得更容易。

+1

什麼是你想要的輸出? – dayne

+0

矩陣或列表,包含可變長度的向量,我在一個循環內加入。 –

+0

您不能在R中創建鋸齒矩陣。您必須爲丟失的單元格賦予一些值。你可以創建一個向量列表。 'some.list < - list(b = b,d = d)',然後使用列表循環/套用以進行計算。你在用期望的矩陣/列表做什麼? – dayne

回答

1
set.seed(1) 
b <- rnorm(10,2,4) 
d <- rnorm(50,5,3) 
f <- rnorm(100,1,0.5) 
example <- list(b=b,d=d,f=f) 
for(i in paste("var",1:3)){ 
    example[[i]] <- rnorm(sample(100,1),mean=sample(5,1),sd=sample(3,1)) 
} 
boxplot(example) 

enter image description here

+0

我必須通過一個循環追加到此列表,將追加(例如,x)在循環中工作?它目前將x的每個元素作爲列表的單個元素。 –

+0

@SahilM看到編輯。您可以使用循環將元素添加到列表中。你應該花一些時間閱讀r中的列表。 – dayne

+0

謝謝,這對我有用! :) –