【问题标题】:Extract sub- and superdiagonal of a matrix in R在R中提取矩阵的子对角线和超对角线
【发布时间】:2012-03-27 07:28:06
【问题描述】:

顾名思义,如何提取矩阵的子对角线和上对角线?

【问题讨论】:

    标签: r matrix extract diagonal


    【解决方案1】:

    使用diag。对于超对角线,您只需丢弃最后一行和第一列。对于次对角线,丢弃第一行最后一列:

    m <- matrix(1:9,nrow=3)
    
    > m
         [,1] [,2] [,3]
    [1,]    1    4    7
    [2,]    2    5    8
    [3,]    3    6    9
    > diag(m)
    [1] 1 5 9
    > diag(m[-nrow(m),-1])
    [1] 4 8
    > diag(m[-1,-ncol(m)])
    [1] 2 6
    

    【讨论】:

      【解决方案2】:

      您可能需要重塑结果......

      help(lower.tri)
      help(upper.tri)
      help(diag)
      

      upper.tri 和 lower.tri 不包括对角线。

      【讨论】:

      • 请注意,upper.tri(x, TRUE) 包括对角线。
      • @koshke 是的,如果你想要对角线,你可以覆盖默认的 diag=FALSE。
      猜你喜欢
      • 2021-09-30
      • 2020-02-05
      • 1970-01-01
      • 1970-01-01
      • 2017-01-07
      • 1970-01-01
      • 2023-04-08
      • 1970-01-01
      • 2016-02-10
      相关资源
      最近更新 更多