Ответ 1
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))
, чтобы получить обычный.