【问题标题】:Removing values from a matrix using coordinates in R使用 R 中的坐标从矩阵中删除值
【发布时间】:2014-05-30 13:55:07
【问题描述】:

我有两个大小相同的不同矩阵,一个有NA值,一个没有,比如:

mat=matrix(rnorm(9, mean=20, sd=10), nrow=3)
mat2=matrix(rnorm(9, mean=20, sd=10), nrow=3)
mat2[mat2<20]=NA

mat
             [,1]      [,2]     [,3]
     [1,] 21.67730 17.978427 17.24766
     [2,] 14.71108 16.970846 30.29543
     [3,] 28.65521  9.191494 18.83665

mat2
             [,1]     [,2]     [,3]
     [1,] 28.6093       NA 32.26887
     [2,]      NA       NA       NA
     [3,]      NA 20.19428 30.25038

我可以使用以下方法识别mat2 中 NA 值的坐标(行/列):

which(is.na(mat2), TRUE)

然后如何使用这些坐标将mat 中的相同值替换为NA?生产:

mat
             [,1]      [,2]     [,3]
     [1,] 21.67730        NA 17.24766
     [2,]       NA        NA       NA
     [3,]       NA  9.191494 18.83665

这是最好的方法吗?提前致谢。

【问题讨论】:

    标签: r matrix na


    【解决方案1】:

    矩阵在内部表示为向量(包含有关维度的信息),因此您可以执行类似

    的操作
    mat[is.na(mat2)] <- NA
    

    这将创建一个布尔向量,指示 mat2 的哪些元素是 NA,然后将 NA 分配给 mat 的这些元素。

    【讨论】:

      【解决方案2】:

      要简单地将这些值替换为 NA,您可以这样做:

      tmp <- which(is.na(mat2))
      mat[tmp] <- NA
      

      【讨论】:

      • 感谢您的回答
      猜你喜欢
      • 1970-01-01
      • 2013-06-20
      • 2018-05-18
      • 2014-07-24
      • 2019-06-03
      • 2017-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多