R 设置范围为1,其余为0的值

R 设置范围为1,其余为0的值,r,matrix,R,Matrix,我在R中有一个7000 X 7000矩阵。例如,我将使用一个较小的矩阵,如下所示:- a <- matrix(c(0:-9, 1:-8, 2:-7, 3:-6, 4:-5, 5:-4, 6:-3, 7:-2, 8:-1, 9:0), byrow = TRUE, ncol = 10, nrow = 10) 我可以使用for循环来实现这一点,但我只想知道是否有更好、更有效的解决方案来实现这一点 提前谢谢。你可以写下比较。它给出一个逻辑矩阵,然后可以使用一元+将结果转换

我在R中有一个7000 X 7000矩阵。例如,我将使用一个较小的矩阵,如下所示:-

a <- matrix(c(0:-9, 1:-8, 2:-7, 3:-6, 4:-5, 5:-4, 6:-3, 7:-2, 8:-1, 9:0),
            byrow = TRUE, ncol = 10, nrow = 10)
我可以使用for循环来实现这一点,但我只想知道是否有更好、更有效的解决方案来实现这一点


提前谢谢。

你可以写下比较。它给出一个逻辑矩阵,然后可以使用一元
+
将结果转换为整数矩阵

+(abs(a) >= 2 & abs(a) <= 5)

#      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
# [1,]    0    0    1    1    1    1    0    0    0     0
# [2,]    0    0    0    1    1    1    1    0    0     0
# [3,]    1    0    0    0    1    1    1    1    0     0
# [4,]    1    1    0    0    0    1    1    1    1     0
# [5,]    1    1    1    0    0    0    1    1    1     1
# [6,]    1    1    1    1    0    0    0    1    1     1
# [7,]    0    1    1    1    1    0    0    0    1     1
# [8,]    0    0    1    1    1    1    0    0    0     1
# [9,]    0    0    0    1    1    1    1    0    0     0
#[10,]    0    0    0    0    1    1    1    1    0     0
+(abs(a)>=2&abs(a)也许你可以试试

> +((abs(a) - 2) * (abs(a) - 5) <= 0)
      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
 [1,]    0    0    1    1    1    1    0    0    0     0
 [2,]    0    0    0    1    1    1    1    0    0     0
 [3,]    1    0    0    0    1    1    1    1    0     0
 [4,]    1    1    0    0    0    1    1    1    1     0
 [5,]    1    1    1    0    0    0    1    1    1     1
 [6,]    1    1    1    1    0    0    0    1    1     1
 [7,]    0    1    1    1    1    0    0    0    1     1
 [8,]    0    0    1    1    1    1    0    0    0     1
 [9,]    0    0    0    1    1    1    1    0    0     0
[10,]    0    0    0    0    1    1    1    1    0     0
((abs(a)-2)*(abs(a)-5)
> +((abs(a) - 2) * (abs(a) - 5) <= 0)
      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
 [1,]    0    0    1    1    1    1    0    0    0     0
 [2,]    0    0    0    1    1    1    1    0    0     0
 [3,]    1    0    0    0    1    1    1    1    0     0
 [4,]    1    1    0    0    0    1    1    1    1     0
 [5,]    1    1    1    0    0    0    1    1    1     1
 [6,]    1    1    1    1    0    0    0    1    1     1
 [7,]    0    1    1    1    1    0    0    0    1     1
 [8,]    0    0    1    1    1    1    0    0    0     1
 [9,]    0    0    0    1    1    1    1    0    0     0
[10,]    0    0    0    0    1    1    1    1    0     0