首页 > 解决方案 > 如何根据行名和列名合并矩阵

问题描述

我想根据行名和列名合并两个矩阵。这是一个例子:

mat1 <- matrix(c(0,0,1,0,1,0,1,1,0), nrow=3, byrow=TRUE)
colnames(mat1) <- c("A", "B", "C")
rownames(mat1) <- c("x", "y", "z")
mat1

  A B C
x 0 0 1
y 0 1 0
z 1 1 0

mat2 <- matrix(0, nrow=4, ncol = 6)
colnames(mat2) <- c("A", "B", "C", "D", "E", "F")
rownames(mat2) <- c("w", "x", "y", "z")
mat2

  A B C D E F
w 0 0 0 0 0 0
x 0 0 0 0 0 0
y 0 0 0 0 0 0
z 0 0 0 0 0 0

如何有效地写入mat1into的值mat2?我想获得:

  A B C D E F
w 0 0 0 0 0 0
x 0 0 1 0 0 0
y 0 1 0 0 0 0
z 1 1 0 0 0 0

我尝试过for循环,但这似乎乏味且效率低下。想法?

标签: rmatrix

解决方案


如果“mat2”是“mat1”的超集,则使用行/列索引来子集“mat2”并分配“mat1”

mat2[row.names(mat1), colnames(mat1)] <- mat1
mat2
#   A B C D E F
# w 0 0 0 0 0 0
# x 0 0 1 0 0 0
# y 0 1 0 0 0 0
# z 1 1 0 0 0 0

推荐阅读