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