从现有矩阵构建块矩阵并在 r 中保留 dimnames

Build block matrix from existing matrixes and retain dimnames in r

我正在构建一个块矩阵,其中包含几个较小的矩阵,我使用包 Matrix

沿对角线传递这些矩阵

假设我有两个矩阵

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))

谢谢!

在 运行 bdiag 之后添加 dimnames(假设您的意思是 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