根据另一个矩阵的值索引矩阵

时间:2015-08-21 16:48:52

标签: r matrix subset

我有一个矩阵(实际上是一个三维数组),我希望根据另一个矩阵(完全二值化)中的值“阈值”。所以,例如。

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

1 个答案:

答案 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])