Преобразовать нижнюю треугольную матрицу в вектор, идущий снизу вверх - PullRequest
0 голосов
/ 16 ноября 2018

Я хотел бы извлечь элементы из нижнего треугольника матрицы в вектор, переходя от нижнего ряда к верхнему ряду матрицы.

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 голосов
/ 16 ноября 2018

Вы можете изменить порядок значений нижнего треугольника в соответствии с их индексом строки:

M[lower.tri(M)][order(-row(M)[lower.tri(row(M))])]
# [1]  4  7  9 10  3  6  8  2  5  1
0 голосов
/ 16 ноября 2018

Не красавица:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...