r - 在R中用不同大小替换矩阵中的值
问题描述
我想替换 mat1 第一列中的值
mat1 <- matrix(c("vect-1822", "vect3", "vect-1818", "vect3", "vect-2030", "vect4", "vect-1926", "vect5", "vect-1818", "vect9", "vect-1818", "vect3", "vect-2030", "vect7"), ncol = 2, byrow=T)
使用 mat2 中第二列的值:
mat2 <- matrix(c("vect-1822", "1", "vect-1818", "33", "vect-2030", "34", "vect-1926", "42"), ncol = 2, byrow=T)
结果将是:
mat_res <- matrix(c("1", "vect3", "33", "vect3", "34", "vect4", "42", "vect5", "33", "vect9", "33", "vect3", "34", "vect7"), ncol = 2, byrow=T)
我尝试了两个索引 i 和 j,但它不是最优的,因为我的矩阵非常大
解决方案
我们可以使用命名向量来匹配和替换
mat3 <- mat1
mat3[,1] <- setNames(mat2[,2], mat2[,1])[mat1[,1]]
-检查OP的输出
identical(mat3, mat_res)
#[1] TRUE
推荐阅读
- python - 在几乎无限的列表中查找元素
- json - 使用 Facebook Graph API 进行身份验证并从 Facebook 页面解析 JSON 评论
- cordova - 没有找到模拟器图像(avds)-ionic cordova run android
- docker - docker-compose v3.1 elasticsearch v6.6.1 cluster 'slave' 不加入 master
- sql-server - 尝试使用变量作为 where 子句
- php - “SQLSTATE[42000]:语法错误或访问冲突:1064您的 SQL 语法有错误;
- php - 根据时间范围创建条件函数
- testing - 在多部手机(各种屏幕)上测试移动应用
- javascript - 3D 变换:奇怪的无限旋转重复的 Img
- javascript - 如何交换标题标签的内容 - HTML/Javascript