矩阵的块对角绑定

Fer*_*aft 18 r matrix

R是否具有以块对角线形状绑定矩阵的基函数?

以下是这项工作,但我想知道是否有标准的方法:

a <- matrix(1:6, 2, 3)
b <- matrix(7:10, 2, 2)

rbind(cbind(a, matrix(0, nrow=nrow(a), ncol=ncol(b))),
      cbind(matrix(0, nrow=nrow(b), ncol=ncol(a)), b))

#     [,1] [,2] [,3] [,4] [,5]
#[1,]    1    3    5    0    0
#[2,]    2    4    6    0    0
#[3,]    0    0    0    7    9
#[4,]    0    0    0    8   10
Run Code Online (Sandbox Code Playgroud)

Jul*_*ora 22

adiag从包magic中做你想要的:

library(magic)
adiag(a,b)
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    3    5    0    0
[2,]    2    4    6    0    0
[3,]    0    0    0    7    9
[4,]    0    0    0    8   10
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用包Matrix和功能bdiag

library(Matrix)
bdiag(a,b)
4 x 5 sparse Matrix of class "dgCMatrix"

[1,] 1 3 5 .  .
[2,] 2 4 6 .  .
[3,] . . . 7  9
[4,] . . . 8 10
Run Code Online (Sandbox Code Playgroud)

返回稀疏矩阵,可能更有效.使用as.matrix(bdiag(a,b))获得常规之一.

  • 添加“adiag”,如果您的矩阵存储在列表中(例如“lst &lt;-list(a,b)”),则需要使用“Reduce(adiag,lst)”,因为它似乎并不知道如何本地解析列表 (2认同)