【发布时间】:2013-11-21 09:49:41
【问题描述】:
假设我有一个矩阵m 和一个正整数向量v,我想做的是得到一个新矩阵m_new 并且m 的每一行(比如m[i, ])都由@ 复制987654326@ 次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 的行数通常很大。有什么有效的方法吗?
【问题讨论】: