Существует ли функция R, которая заполняет нижнюю (или верхнюю) диагональ матрицы (с включенной диагональю) из числового объекта? - PullRequest
0 голосов
/ 07 февраля 2019

У меня есть список из 55 числовых значений.Я хочу создать матрицу 10x10, в которой будет заполнена только нижняя (или верхняя) треугольная матрица (с самой диагональю).Я знаю, что могу использовать lower.tri() для создания нижней треугольной матрицы, однако, когда я использую эту функцию, кажется, что данные не заполняются строкой.Если я использую matrix(v, nrow= 10, ncol= 10, byrow= TRUE), то заполняется полная матрица, а не только нижняя диагональ.Я видел решения для аналогичной проблемы ( Заполните нижнюю матрицу вектором за строкой, а не столбцом ), но в этом примере они используют только 6 переменных, тогда как у меня 10, и это решение искажается для меня,

v <- 1:55
m <- diag(10)

1 Ответ

0 голосов
/ 07 февраля 2019

Простой трюк может сделать.Например, чтобы заполнить нижнюю треугольную матрицу строкой.Сначала заполните верхнюю треугольную матрицу столбцом (что по умолчанию), затем преобразуйте матрицу.И наоборот.
Поскольку по умолчанию матрица R заполняется в столбце, просто заполните сначала преобразованную матрицу и преобразовайте ее обратно.
Пример кода
m = diag(10)
upperm = upper.tri(m, diag = T)
m[upperm] = v; t(m)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...