2013-08-20 30 views
1

給定一個矩陣,[R複製基於其索引

x<-matrix(rnorm(4)) 

元素如何可以做以下

所以,第1行的元素將通過1次得到複製,通過2次,等2行的元素...

我試圖用'rep'和循環來做,但如果矩陣很大,它的確很慢。

回答

4

如果你只是想那麼一個長矢量給出的rep是矢量化,你可以簡單地做......

rep(x , times = 1:nrow(x)) 
#[1] 1.5921465 0.9901053 0.9901053 0.2125433 0.2125433 0.2125433 -0.9288893 -0.9288893 -0.9288893 -0.9288893 

如果你需要每行作爲一個單獨的元素嘗試lapply,不同類型的循環結構。 ..

lapply(1:nrow(x) , function(i) rep(x[i,] , times = i)) 
#[[1]] 
#[1] 1.592147 

#[[2]] 
#[1] 0.9901053 0.9901053 

#[[3]] 
#[1] 0.2125433 0.2125433 0.2125433 

#[[4]] 
#[1] -0.9288893 -0.9288893 -0.9288893 -0.9288893 

這個回答假設矩陣x可以在你的.GlobalEnvironment