Р: Как построить повторяющуюся единичную матрицу - PullRequest
2 голосов
/ 20 октября 2019

Есть ли в R функция, позволяющая легко построить повторяющуюся единичную матрицу (не уверен, что это правильный термин)?

Это то, что я сейчас использую, но это немного громоздко и не интуитивно понятно:

Ngroups   <- 3
NperGroup <- 2
Z <- diag(Ngroups)[rep(1:Ngroups, each = NperGroup), ]

> Z
     [,1] [,2] [,3]
[1,]    1    0    0
[2,]    1    0    0
[3,]    0    1    0
[4,]    0    1    0
[5,]    0    0    1
[6,]    0    0    1

1 Ответ

4 голосов
/ 20 октября 2019

Вот один из способов ...

diag(3) %x% c(1,1)

     [,1] [,2] [,3]
[1,]    1    0    0
[2,]    1    0    0
[3,]    0    1    0
[4,]    0    1    0
[5,]    0    0    1
[6,]    0    0    1

В вашем случае diag(Ngroups) %x% rep(1,NperGroup) сделает это. См. ?kronecker для дальнейших опций

...