首页 > 解决方案 > 在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,但它不是最优的,因为我的矩阵非常大

标签: r

解决方案


我们可以使用命名向量来匹配和替换

mat3 <- mat1
mat3[,1] <- setNames(mat2[,2], mat2[,1])[mat1[,1]]

-检查OP的输出

identical(mat3, mat_res)
#[1] TRUE

推荐阅读