将列向量转换为R中矩阵的对角线?

时间:2019-09-17 14:02:46

标签: matrix vector diagonal

我有一个列向量,其格式为R:num [1:2464,1]。

我想对角矢量,所以每个元素都在矩阵的对角线上。我尝试了以下代码:

diagvector <- diag(myvector)

但是它只显示第一个数字。我想我只有在向量具有以下形式的情况下才能使用该代码:num [1:2464]。

所以我如何a)将向量的格式从num [1:2464,1]更改为num [1:2464],或b)将对角线对数为num [1:2464], 1]?

1 个答案:

答案 0 :(得分:1)

您的“列向量”实际上是一个矩阵,因为它具有两个维度,但it can be formed into a vector

myvector <- matrix(1:2464, 1)
diagvector <- diag(c(myvector))
diagvector
        [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13]    ...
   [1,]    1    0    0    0    0    0    0    0    0     0     0     0     0
   [2,]    0    2    0    0    0    0    0    0    0     0     0     0     0
   [3,]    0    0    3    0    0    0    0    0    0     0     0     0     0
   [4,]    0    0    0    4    0    0    0    0    0     0     0     0     0
   [5,]    0    0    0    0    5    0    0    0    0     0     0     0     0
   [6,]    0    0    0    0    0    6    0    0    0     0     0     0     0
   [7,]    0    0    0    0    0    0    7    0    0     0     0     0     0
   [8,]    0    0    0    0    0    0    0    8    0     0     0     0     0
   [9,]    0    0    0    0    0    0    0    0    9     0     0     0     0
  [10,]    0    0    0    0    0    0    0    0    0    10     0     0     0
  [11,]    0    0    0    0    0    0    0    0    0     0    11     0     0
  [12,]    0    0    0    0    0    0    0    0    0     0     0    12     0
  [13,]    0    0    0    0    0    0    0    0    0     0     0     0    13
    ...

或者:

myvector <- matrix(1:2464, 1)
diagvector <- diag(length(myvector)) * c(myvector)
diagvector