Я пытаюсь создать в R матрицу следующего вида: количество строк равно n (прилагается); в строке i для всех i = 1: n элементы в позициях n (i-1) от +1 до n (i-1) + n включительно равны 1, все остальные элементы 0. Например, если n = 3, матрица выглядит как
1
0
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 предпочтительно)?
for
Самый простой / самый эффективный метод (в базе R) будет идеальным.
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