r语言 - 将向量替换为具有不同长度的上三角形矩阵



当向量的长度小于替换长度时,我想通过向量有一个三角形矩阵。 例如:

v<- c(1,2,3,4,5,6)

mat<- matrix(0,5,5).

如果我使用

mat[upper.tri(mat, diag=FALSE)]<- v

,结果是:

[,1] [,2] [,3] [,4] [,5]
[1,]    0    1    2    4    1
[2,]    0    0    3    5    2
[3,]    0    0    0    6    3
[4,]    0    0    0    0    4
[5,]    0    0    0    0    0

但我不想替换矩阵中超过矢量长度的长度。我想要:

[1,]    0    1    2    4    0
[2,]    0    0    3    5    0
[3,]    0    0    0    6    0
[4,]    0    0    0    0    0
[5,]    0    0    0    0    0 

您可以将vlength调整为上三角形的。这将生成一些可以用零替换的NA值。

u.tri <- upper.tri(mat, diag=FALSE)
mat[u.tri] <- `length<-`(v, length(u.tri)) 
mat[is.na(mat)] <- 0
#      [,1] [,2] [,3] [,4] [,5]
# [1,]    0    1    2    4    0
# [2,]    0    0    3    5    0
# [3,]    0    0    0    6    0
# [4,]    0    0    0    0    0
# [5,]    0    0    0    0    0

最新更新