将列向量转换为扩展对角矩阵

问题描述 投票:0回答:1

请考虑以下列向量:

vec <- rbind(c(0.5),c(0.6))

我想将其转换为以下4x4对角矩阵:

0.5   0   0    0 
  0 0.6   0    0 
  0   0 0.5    0
  0   0   0  0.6

我知道我可以通过以下代码来做到这一点:

dia <- diag(c(vec,vec))

但是如果我想将其转换为1000x1000对角矩阵,该怎么办?那么上面的代码是如此高效。也许我可以使用rep,但是我不太确定该怎么做。如何提高效率?

r vector diagonal
1个回答
0
投票

我认为您的方法已经足够好,这是通过初始化矩阵并使用rep填充对角线的另一种方法。

n <- 4
mat <- matrix(0, ncol = n, nrow = n)
diag(mat) <- rep(vec, 2)

mat
#     [,1] [,2] [,3] [,4]
#[1,]  0.5  0.0  0.0  0.0
#[2,]  0.0  0.6  0.0  0.0
#[3,]  0.0  0.0  0.5  0.0
#[4,]  0.0  0.0  0.0  0.6
© www.soinside.com 2019 - 2024. All rights reserved.