R 将列向量转换为扩展对角矩阵
考虑以下列向量:R 将列向量转换为扩展对角矩阵,r,matrix,vector,diagonal,R,Matrix,Vector,Diagonal,考虑以下列向量: vec <- rbind(c(0.5),c(0.6)) 我知道我可以通过以下代码来完成: dia <- diag(c(vec,vec)) dia我认为你的方法已经足够好了,这里有另一种方法,初始化矩阵并使用rep填充对角线 n <- 4 mat <- matrix(0, ncol = n, nrow = n) diag(mat) <- rep(vec, n/2) mat # [,1] [,2] [,3] [,4] #[1,] 0.5
vec <- rbind(c(0.5),c(0.6))
我知道我可以通过以下代码来完成:
dia <- diag(c(vec,vec))
dia我认为你的方法已经足够好了,这里有另一种方法,初始化矩阵并使用rep
填充对角线
n <- 4
mat <- matrix(0, ncol = n, nrow = n)
diag(mat) <- rep(vec, n/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
以下是使用回收的另一种方法:
diag(c(vec), length(vec)*2)
只是一个小提示,但是使用rep(vec,n/2)
可能会更好:)是的,这是一个很好的提示:-)谢谢你们!谢谢@tmfmnk,我想vec
的大小总是n/2
。
diag(rep(vec, n/2))
diag(c(vec), length(vec)*2)