1
假設我有一個矩陣m
和一個正整數向量v
,我想要做的就是一個新的矩陣m_new
和m
每一行(比如m[i, ]
)由v[i]
倍m_new
複製。例如:複製行
m = matrix(1:6, nrow = 3)
## [,1] [,2]
## [1,] 1 4
## [2,] 2 5
## [3,] 3 6
v = c(3, 1, 2)
而且m_new
應該是:
[,1] [,2]
[1,] 1 4 # m[1, ] is replicated by
[2,] 1 4 # v[1] = 3
[3,] 1 4 # times
[4,] 2 5
[5,] 3 6
[6,] 3 6
一個for
循環,可以使對小案例:
m_new = matrix(0, sum(v), ncol(m))
k = 1
for(i in 1:nrow(m)){
for(j in k:(k+v[i]-1)){
m_new[j, ] = m[i, ]
}
k = k + v[i]
}
,但m
在現實世界中的行數通常很大。有沒有什麼有效的方法來做到這一點?