我正在构建一个块矩阵,其中有几个较小的矩阵,我沿着对角线经过矩阵
我们说我有两个矩阵
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))
谢谢!
答案 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