我想将元素从矩阵的下三角形提取到向量,从矩阵的底部到顶部。
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)
感谢您的帮助。
答案 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