R根据其索引复制元素

时间:2013-08-20 16:00:00

标签: r

给定一个矩阵,

x<-matrix(rnorm(4))

我该怎样做

因此第1行的元素将被复制1次,第2行的元素将被复制2次等等。

我尝试用'rep'和循环来做,但如果矩阵很大,它真的很慢。

1 个答案:

答案 0 :(得分: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