R:如何构造重复单位矩阵

mat*_*mat 2 r matrix sparse-matrix

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
Run Code Online (Sandbox Code Playgroud)

And*_*tar 5

这是一种方法...

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
Run Code Online (Sandbox Code Playgroud)

在你的情况下diag(Ngroups) %x% rep(1,NperGroup)会这样做。查看?kronecker更多选项