将下三角矩阵转换为向量,从下到上

时间:2018-11-16 10:23:44

标签: r matrix

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

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)

感谢您的帮助。

2 个答案:

答案 0 :(得分:4)

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

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

答案 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