请考虑以下列向量:
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
,但是我不太确定该怎么做。如何提高效率?
我认为您的方法已经足够好,这是通过初始化矩阵并使用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