如果意图是 replace 最后一行,请使用带有行/列索引的 replace
replace(matrix(0,nrow=4,ncol=5), cbind(4, 1:5), c(4,8,12,16,20))
# [,1] [,2] [,3] [,4] [,5]
#[1,] 0 0 0 0 0
#[2,] 0 0 0 0 0
#[3,] 0 0 0 0 0
#[4,] 4 8 12 16 20
或者做作业
m1 <- matrix(0,nrow=4,ncol=5)
m1[nrow(m1),] <- c(4,8,12,16,20)
或者如果我们需要使用+
matrix(0, nrow=4, ncol=5) +
do.call(rbind, rep(list(0, c(4, 8, 12, 16, 20)), c(3, 1)))
# [,1] [,2] [,3] [,4] [,5]
#[1,] 0 0 0 0 0
#[2,] 0 0 0 0 0
#[3,] 0 0 0 0 0
#[4,] 4 8 12 16 20
或者另一种选择是将回收的逻辑向量与值的replicated 向量相乘以将值更改为0,然后构造matrix
matrix(rep(c(4, 8, 12, 16, 20), each = 4) * c(FALSE, FALSE, FALSE, TRUE), 4, 5)
# [,1] [,2] [,3] [,4] [,5]
#[1,] 0 0 0 0 0
#[2,] 0 0 0 0 0
#[3,] 0 0 0 0 0
#[4,] 4 8 12 16 20