【问题标题】:Convert lower triangular matrix to a vector, going from bottom to top将下三角矩阵转换为向量,从下到上
【发布时间】:2018-11-16 10:23:43
【问题描述】:

我想从矩阵的下三角形提取元素到一个向量,从矩阵的底行到顶行。

x <- c(1:10)
M <- matrix(0,5,5)
M[lower.tri(M, diag=FALSE)] <- x

M
#     [,1] [,2] [,3] [,4] [,5]
# [1,]    0    0    0    0    0
# [2,]    1    0    0    0    0
# [3,]    2    5    0    0    0
# [4,]    3    6    8    0    0
# [5,]    4    7    9   10    0

我想把它转换成这个:

x <- c(4, 7, 9, 10, 3, 6, 8, 2, 5, 1)

感谢您的帮助。

【问题讨论】:

    标签: r matrix


    【解决方案1】:

    您可以根据行索引重新排列较低的三角形值:

    M[lower.tri(M)][order(-row(M)[lower.tri(row(M))])]
    # [1]  4  7  9 10  3  6  8  2  5  1
    

    【讨论】:

    • t(M[nrow(M):1, ])[upper.tri(M)[, ncol(M):1]] 也同样可以
    【解决方案2】:

    不是美女:

    vec <- numeric()
    for ( i in 2:nrow(M) ) {
        vec<- c(M[i, 1:(i-1)], vec)
    }
    
    #> vec
    # [1]  4  7  9 10  3  6  8  2  5  1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-17
      • 2017-12-19
      • 2018-12-28
      • 2018-07-06
      • 2014-12-10
      • 1970-01-01
      相关资源
      最近更新 更多