R 如何将n*1矩阵转换为n*n对角矩阵

R 如何将n*1矩阵转换为n*n对角矩阵,r,matrix,R,Matrix,我有一个nx1矩阵,我想把它转换成R中的nxn对角矩阵 在您的情况下,如果原始向量包含相同的元素,则按照注释建议,将nxn单位矩阵乘以0.25即可 但具有不相同元素的向量的一般情况更有趣: 用v=(v_1,…,v_n)表示您的nx1列向量。 然后,将nxn矩阵E_i定义为一个矩阵,其[i,i]元素中有1,其他地方有零。还将nx1列向量e_i定义为在[i]位置(行)具有1且在其他位置均为零的向量 然后,可以获得nxn矩阵V=diag(V_1,…,V_n),如下所示: V=∑(E_i VE_i) 当

我有一个nx1矩阵,我想把它转换成R中的nxn对角矩阵


在您的情况下,如果原始向量包含相同的元素,则按照注释建议,将nxn单位矩阵乘以0.25即可

但具有不相同元素的向量的一般情况更有趣:

v=(v_1,…,v_n)表示您的nx1列向量。 然后,将nxn矩阵E_i定义为一个矩阵,其[i,i]元素中有1,其他地方有零。还将nx1列向量e_i定义为在[i]位置(行)具有1且在其他位置均为零的向量

然后,可以获得nxn矩阵V=diag(V_1,…,V_n),如下所示:

V=E_i VE_i
当总和超过i=1,…n时,如果您只想知道如何在
R
中执行此操作,则:

my.matrix       <- matrix(0, nrow=4, ncol=4)
diag(my.matrix) <- rep(0.25, 4)

my.matrix正如@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

my.matrix bison,谷歌身份矩阵,你应该删除这个问题,它看起来不属于这个网站。问题不清楚。如果您想知道如何使用软件执行此操作,则需要指定语言(&此Q将属于堆栈溢出)。如果你想知道如何乘法,等等,向量来得到结果,这个Q属于math.SE.或者更一般的
diag(c(orig\u column\u vector))
谢谢Maetheran,这是一个简单的一行步骤,再次感谢你们的帮助,你们太棒了。