使用 R 中的坐标从矩阵中删除值

标签 r matrix na

我有两个相同大小的不同矩阵,一个有 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

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

最佳答案

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

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

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

关于使用 R 中的坐标从矩阵中删除值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23956296/

相关文章:

r - 捕获错误然后分支逻辑

r - 如何根据 Shiny 应用程序中的一个小部件的选择显示一些小部件

r - 使用 ggplot2 的 geom_bar() 查询 - R

matlab - 向量作为矩阵中的列索引

r - 用NA水平分割一个因子

通过切换字符串模式重命名数据框列名称

math - 从 3D 中的变换矩阵计算 'up vector'

r - 使用 R 创建完全对立的绘图

R 删除第一行数据框,直到第一行没有 NA

r - 如何在20列中用0代替NA?