【问题标题】:Create a special diagonal matrix in R在 R 中创建一个特殊的对角矩阵
【发布时间】:2021-12-11 11:15:58
【问题描述】:

我有一个如下的数字向量。

c <- c(5, 4.5, 4, 3.5, 3, 2.5, 2, 1.5, 1, 0.5, 0, 0)

我可以像下面这样创建一个矩阵或 data.table 吗?我想过做一个循环,但需要很长时间,因为真实的数据集很大。

5   4.5 4   3.5 3   2.5 2   1.5 1   0.5 0   0
0   5   4.5 4   3.5 3   2.5 2   1.5 1   0.5 0
0   0   5   4.5 4   3.5 3   2.5 2   1.5 1   0.5
0   0   0   5   4.5 4   3.5 3   2.5 2   1.5 1
0   0   0   0   5   4.5 4   3.5 3   2.5 2   1.5
0   0   0   0   0   5   4.5 4   3.5 3   2.5 2
0   0   0   0   0   0   5   4.5 4   3.5 3   2.5
0   0   0   0   0   0   0   5   4.5 4   3.5 3
0   0   0   0   0   0   0   0   5   4.5 4   3.5
0   0   0   0   0   0   0   0   0   5   4.5 4
0   0   0   0   0   0   0   0   0   0   5   4.5
0   0   0   0   0   0   0   0   0   0   0   5

任何想法都值得赞赏!

【问题讨论】:

    标签: r matrix data.table


    【解决方案1】:

    我们可以使用toeplitz

    out <-  toeplitz(c)
    out[lower.tri(out)] <- 0
    

    -输出

    > out
          [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
     [1,]    5  4.5  4.0  3.5  3.0  2.5  2.0  1.5  1.0   0.5   0.0   0.0
     [2,]    0  5.0  4.5  4.0  3.5  3.0  2.5  2.0  1.5   1.0   0.5   0.0
     [3,]    0  0.0  5.0  4.5  4.0  3.5  3.0  2.5  2.0   1.5   1.0   0.5
     [4,]    0  0.0  0.0  5.0  4.5  4.0  3.5  3.0  2.5   2.0   1.5   1.0
     [5,]    0  0.0  0.0  0.0  5.0  4.5  4.0  3.5  3.0   2.5   2.0   1.5
     [6,]    0  0.0  0.0  0.0  0.0  5.0  4.5  4.0  3.5   3.0   2.5   2.0
     [7,]    0  0.0  0.0  0.0  0.0  0.0  5.0  4.5  4.0   3.5   3.0   2.5
     [8,]    0  0.0  0.0  0.0  0.0  0.0  0.0  5.0  4.5   4.0   3.5   3.0
     [9,]    0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  5.0   4.5   4.0   3.5
    [10,]    0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0   5.0   4.5   4.0
    [11,]    0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0   0.0   5.0   4.5
    [12,]    0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0   0.0   0.0   5.0
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-08
      • 2014-07-13
      • 1970-01-01
      • 2013-08-04
      • 1970-01-01
      • 2016-05-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多