将矩阵映射到逻辑矩阵中

时间:2014-07-08 03:35:42

标签: r matrix

寻找将矩阵映射到逻辑矩阵的优雅方法。 例如,如果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

3 个答案:

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