我有一个nx1矩阵我想将其转换为R
中的nxn对角矩阵
答案 0 :(得分:4)
如果您只是想知道如何在R
中执行此操作,那就是:
my.matrix <- matrix(0, nrow=4, ncol=4)
diag(my.matrix) <- rep(0.25, 4)
答案 1 :(得分:4)
正如@Ben Bolker建议的那样,您可以使用diag
简单地定义您的身份矩阵:
my.matrix <- diag(0.25, 4)
my.matrix
## [,1] [,2] [,3] [,4]
## [1,] 0.25 0.00 0.00 0.00
## [2,] 0.00 0.25 0.00 0.00
## [3,] 0.00 0.00 0.25 0.00
## [4,] 0.00 0.00 0.00 0.25
答案 2 :(得分:2)
在您的情况下,原始矢量包含相同的元素,只需将 n x n 标识矩阵乘以 0.25 即可评论建议。
但是具有不相同元素的向量的一般情况更有趣:
通过 v =(v_1,...,v_n)'表示 n x 1 列向量。 然后,将 n x n 矩阵 E_i 定义为其[i,i]元素中 1 的矩阵到处都是零。同时将 n x 1 列向量 e_i 定义为[i]位置(行中 1 的向量其他地方都是零。
然后 n x n 矩阵 V = diag (v_1,...,v_n)可以获得
总和超过 i = 1,... n