Генерация матрицы в R без петли - PullRequest
0 голосов
/ 03 мая 2020

Я пытаюсь создать в R матрицу следующего вида: количество строк равно n (прилагается); в строке i для всех i = 1: n элементы в позициях n (i-1) от +1 до n (i-1) + n включительно равны 1, все остальные элементы 0. Например, если n = 3, матрица выглядит как

1 1 1 0 0 0 0 0 0
0 0 0 1 1 1 0 0 0
0 0 0 0 0 0 1 1 1

Или для n = 4:

1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1

Есть ли способ построить эту матрицу в R для общего n без использования for циклов (или любого другого вида l oop предпочтительно)?

Самый простой / самый эффективный метод (в базе R) будет идеальным.

1 Ответ

5 голосов
/ 03 мая 2020
matrix(rep(diag(3), each=3), nrow=3, byrow=TRUE)

возвращает

     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
[1,]    1    1    1    0    0    0    0    0    0
[2,]    0    0    0    1    1    1    0    0    0
[3,]    0    0    0    0    0    0    1    1    1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...