r - 如何根据行名和列名合并矩阵
问题描述
我想根据行名和列名合并两个矩阵。这是一个例子:
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
如何有效地写入mat1
into的值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
循环,但这似乎乏味且效率低下。想法?
解决方案
如果“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
推荐阅读
- android - 为三星 S8 应用正确的尺寸文件
- javascript - 将代码从 js 更改为 jQuery
- spring - Spring Security 未登陆自定义登录页面
- java - webview从没有文件选择器的输入字段打开相机
- javascript - 带有 ng-repeat 的表中的 2d 多级对象
- r - R中> 2个样本的荟萃分析中的卡方检验
- jquery - jQuery 属性值编码
- c# - 使用 OnControllerColliderHit() 与 CharacterController 发生多次碰撞时检测特定碰撞
- android - 睡眠后无法向连接到 Android Device Host 的 USB 设备发送数据
- jquery - 当前带有 jQuery 的 Nasa EPIC API 图像