【发布时间】:2015-08-21 16:48:51
【问题描述】:
我有一个矩阵(实际上是一个 3-D 数组),我想根据另一个矩阵(完全二值化)中的值对其进行“阈值化”。所以,例如
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
【问题讨论】:
-
我添加了
set.seed函数以实现重现性。将您想要的输出修复到那些新的(并且总是相同的)矩阵。 -
M.thresh <- ifelse(N!=1,0,M) -
@Heroka 我想我需要多喝一剂咖啡……这是一个非常明显的解决方案。谢谢!
-
请将答案发布为答案,而不是 cmets :)