寻找将矩阵映射到逻辑矩阵的优雅方法。
例如,如果n[i,j] >= 10
它应该映射到1,否则为0。
12 34 3 4 10
11 1 3 4 6
2 34 4 3 22
应映射到:
1 1 0 0 1
1 0 0 0 0
0 1 0 0 1
答案 0 :(得分:3)
如果x
是矩阵
(x>=10)*1
# [,1] [,2] [,3] [,4] [,5]
#[1,] 1 1 0 0 1
#[2,] 1 0 0 0 0
#[3,] 0 1 0 0 1
或者
(x>=10)+0
答案 1 :(得分:1)
使用ifelse
:
x <- matrix(c(12, 34, 3, 4, 10, 11, 1, 3, 4, 6, 2, 34, 4, 3, 22), 3, 5, byrow=TRUE)
ifelse(x >= 10, 1, 0)
[,1] [,2] [,3] [,4] [,5]
[1,] 1 1 0 0 1
[2,] 1 0 0 0 0
[3,] 0 1 0 0 1
答案 2 :(得分:1)
这应该简单如下:
mat <- your.mat >= 10
mat[] <- as.numeric( mat ) # the `[]` on the LHS preserves the structure.
E.g。
> mat <- matrix(sample(1:20,16),4) >5
> mat[] <- as.numeric(mat)
> mat
[,1] [,2] [,3] [,4]
[1,] 1 0 0 1
[2,] 1 1 1 1
[3,] 1 0 1 1
[4,] 1 1 0 1