矩阵的块对角绑定

时间:2013-07-05 19:39:25

标签: 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

1 个答案:

答案 0 :(得分:21)

来自包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

或者,您可以使用包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

返回稀疏矩阵,可能更有效。使用as.matrix(bdiag(a,b))定期获取。