Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 将列向量转换为扩展对角矩阵_R_Matrix_Vector_Diagonal - Fatal编程技术网

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)