【发布时间】:2020-07-23 08:05:51
【问题描述】:
我有v<- c(2,4,5) 和mat<- matrix(0,n,n)。
我想替换矩阵上部的向量,我识别的每个地方,数组都替换为向量的长度数。例如,对于 n=5,输出可以是:
[,1] [,2] [,3] [,4] [,5]
[1,] 0 2 4 0 0
[2,] 0 0 5 0 0
[3,] 0 0 0 0 0
[4,] 0 0 0 0 0
[5,] 0 0 0 0 0
我尝试使用以下代码:
mat <- matrix(0, nrow = 5, ncol = 5)
for (i in 1:5){
for (j in 1:5){
if (i<j & j<= 5){
mat [upper.tri(mat, diag = FALSE)]<- v
}
}
}
但输出是:
[,1] [,2] [,3] [,4] [,5]
[1,] 0 2 4 2 2
[2,] 0 0 5 4 4
[3,] 0 0 0 5 5
[4,] 0 0 0 0 2
[5,] 0 0 0 0 0
我有两个问题:
我希望向量在矩阵中只替换一次,不要重复。
我不知道我必须在循环中的哪里替换 i 和 j 以替换矩阵的起点来替换向量。(也许我想从矩阵中的 [3,4] 开始向量。) .例如:
[,1] [,2] [,3] [,4] [,5]
[1,] 0 0 0 0 0
[2,] 0 0 0 0 0
[3,] 0 0 0 2 4
[4,] 0 0 0 0 5
[5,] 0 0 0 0 0
【问题讨论】: