我有一个大矩阵 z,我删除了所有 >3 的值并使用 NA 替换:
z[z>3]<-NA
我有另一个尺寸相同的矩阵 y
,我需要在与元素 z 中替换元素的位置相对应的位置将值替换为 NA
。
也就是说,如果 z[3,12]
>3 并替换为 NA,我也需要将 y[3,12]
替换为 NA。如果有帮助的话,它们具有相同的行名称。
最佳答案
set.seed(42)
z <- matrix(rnorm(15, mean = 1), nrow = 5)
y <- matrix(0, nrow = 5, ncol = 3)
z
# [,1] [,2] [,3]
# [1,] 2.3709584 0.8938755 2.3048697
# [2,] 0.4353018 2.5115220 3.2866454
# [3,] 1.3631284 0.9053410 -0.3888607
# [4,] 1.6328626 3.0184237 0.7212112
# [5,] 1.4042683 0.9372859 0.8666787
y
# [,1] [,2] [,3]
# [1,] 0 0 0
# [2,] 0 0 0
# [3,] 0 0 0
# [4,] 0 0 0
# [5,] 0 0 0
# The 2D matrix can be indexed as a vector
idx <- which(z > 3)
z[idx] <- NA
y[idx] <- NA
z
# [,1] [,2] [,3]
# [1,] 2.3709584 0.8938755 2.3048697
# [2,] 0.4353018 2.5115220 NA
# [3,] 1.3631284 0.9053410 -0.3888607
# [4,] 1.6328626 NA 0.7212112
# [5,] 1.4042683 0.9372859 0.8666787
y
# [,1] [,2] [,3]
# [1,] 0 0 0
# [2,] 0 0 NA
# [3,] 0 0 0
# [4,] 0 NA 0
# [5,] 0 0 0
关于R:将一个矩阵中的元素替换为另一个矩阵中 NA 对应位置的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29959009/