2016-02-26 22 views
4

我有我想在新的矩陣,重複N使用矢量倍列的矢量cbind載體多次中的R

即我有一個矢量

>vec 
[1] 266 130 86 69 56 39 30 44 33 43 

我想生產n次

vec1 vec1 
266 266 
130 130 
86 86 
69 69 
56 56 
39 39 
30 30 
44 44 
33 33 
43 43 ..... 

我不完全熟悉do.call,但你會使用該功能來實現這一目標嗎?

回答

9

ř回收載體在創建矩陣,因此可以這樣做:

matrix(vec , length(vec) , n) 

其中n是列/重複的次數。

2

這裏的另一個明顯的替代方法是使用replicate(雖然matrix應該是更有效):

> vec <- scan() 
1: 266 130 86 69 56 39 30 44 33 43 
11: 
Read 10 items 
> replicate(5, vec) 
     [,1] [,2] [,3] [,4] [,5] 
[1,] 266 266 266 266 266 
[2,] 130 130 130 130 130 
[3,] 86 86 86 86 86 
[4,] 69 69 69 69 69 
[5,] 56 56 56 56 56 
[6,] 39 39 39 39 39 
[7,] 30 30 30 30 30 
[8,] 44 44 44 44 44 
[9,] 33 33 33 33 33 
[10,] 43 43 43 43 43 

或者,你可以採取更隱蔽的(但可能更快)的做法一樣:

`dim<-`(rep(vec, 5), c(length(vec), 5))