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

Convert column vector to the diagonal of a matrix in R?

我在 R 中有一个具有以下格式的列向量:num [1:2464, 1]。

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

diagvector <- diag(myvector)

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

那么我该如何 a) 将我的向量的格式从 num [1:2464, 1] 更改为 num [1:2464],或者 b) 使用格式 num [1: 2464, 1]?

您的 "column vector" 实际上是一个矩阵,因为它有两个维度,但是 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