从现有矩阵构建块矩阵并在r

时间:2018-03-07 00:46:57

标签: r matrix block names

我正在构建一个块矩阵,其中有几个较小的矩阵,我沿着对角线经过矩阵

我们说我有两个矩阵

m1=matrix(runif(10*10),nrow=10,ncol=10)
m2=matrix(runif(5*5),nrow=5,ncol=5)

我用

创建一个块矩阵
M<-bdiag(m1,m2)

如何将较小的m1和m2中的列和行的名称保留到块矩阵M?

请注意我在数据框中需要M,因此我最后还需要运行

M<-as.data.frame(as.matrix(M))

谢谢!

1 个答案:

答案 0 :(得分:3)

在运行dimnames之后重新添加bdiag(假设您的意思是Matrix::bdiag):

m1 <- matrix(1:9,nrow=3,dimnames=list(LETTERS[1:3],LETTERS[1:3]))
m2 <- matrix(1:4,nrow=2,dimnames=list(LETTERS[4:5],LETTERS[4:5]))
m1

#  A B C
#A 1 4 7
#B 2 5 8
#C 3 6 9

m2
#  D E
#D 1 3
#E 2 4

out <- bdiag(m1,m2)
dimnames(out) <- Map(c, dimnames(m1), dimnames(m2))
out

#5 x 5 sparse Matrix of class "dgCMatrix"
#  A B C D E
#A 1 4 7 . .
#B 2 5 8 . .
#C 3 6 9 . .
#D . . . 1 3
#E . . . 2 4