【问题标题】:Replace values in matrix with different size in R在R中用不同大小替换矩阵中的值
【发布时间】:2020-05-01 19:19:43
【问题描述】:

我想替换 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


    【解决方案1】:

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

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

    -检查 OP 的输出

    identical(mat3, mat_res)
    #[1] TRUE
    

    【讨论】:

      猜你喜欢
      • 2021-02-19
      • 1970-01-01
      • 1970-01-01
      • 2016-05-27
      • 2014-09-19
      • 1970-01-01
      • 2012-04-16
      • 2016-09-10
      • 1970-01-01
      相关资源
      最近更新 更多