我有一个矩阵(实际上是一个三维数组),我希望根据另一个矩阵(完全二值化)中的值“阈值”。所以,例如。
set.seed(1234)
M <- matrix(1:9, nrow=3, byrow=F)
M
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
set.seed(1234)
N <- matrix(sample(c(0, 0, 1), 9, replace=T), nrow=3)
N
[,1] [,2] [,3]
[1,] 0 0 0
[2,] 0 1 0
[3,] 0 0 0
我只想保留M
中与N
等于1的位置相同的值;将其余部分变为0。输出应该是:
M.thresh
[,1] [,2] [,3]
[1,] 0 0 0
[2,] 0 5 0
[3,] 0 0 0
答案 0 :(得分:1)
只需用矩阵索引替换。
N[N == 1] <- M[N == 1]
N
# [,1] [,2] [,3]
# [1,] 0 0 0
# [2,] 0 5 0
# [3,] 0 0 0
或replace(N, N == 1, M[N == 1])