Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我如何将R中矩阵的二进制数字(0和1)求逆?_R - Fatal编程技术网

我如何将R中矩阵的二进制数字(0和1)求逆?

我如何将R中矩阵的二进制数字(0和1)求逆?,r,R,我已经通过使用R包pixmap读取pgm文件创建了一个二进制数字矩阵,但我正在尝试反转二进制数字(使所有0变为1,所有1变为0)并再次输出矩阵。有没有一种有效的方法可以做到这一点?你可以试试 indOnes <- matrix == 1 indZeros <- matrix == 0 matrix[indOnes] <- 0 matrix[indZeros] <- 1 indOnes如果你有1和0的矩阵,并且想用0改变1,反之亦然,你可以这样做 +(mat == 0)

我已经通过使用R包pixmap读取pgm文件创建了一个二进制数字矩阵,但我正在尝试反转二进制数字(使所有0变为1,所有1变为0)并再次输出矩阵。有没有一种有效的方法可以做到这一点?

你可以试试

indOnes <- matrix == 1
indZeros <- matrix == 0
matrix[indOnes] <- 0
matrix[indZeros] <- 1

indOnes如果你有1和0的矩阵,并且想用0改变1,反之亦然,你可以这样做

+(mat == 0)

#     [,1] [,2] [,3] [,4]
#[1,]    1    1    1    0
#[2,]    1    0    1    1
#[3,]    1    0    0    0
#[4,]    0    0    0    1
数据

其中原始
mat
为:

set.seed(123)
mat <- matrix(sample(0:1, 16, replace = TRUE), 4)
mat
#     [,1] [,2] [,3] [,4]
#[1,]    0    0    0    1
#[2,]    0    1    0    0
#[3,]    0    1    1    1
#[4,]    1    1    1    0
set.seed(123)
mat您可以尝试
abs(1-您的矩阵)

mat 0.5)、3、2)
垫子
#     [,1] [,2] [,3]
#[1,]    1    0    1
#[2,]    1    0    1
abs(1-mat)
#     [,1] [,2] [,3]
#[1,]    0    1    0
#[2,]    0    1    0

矩阵我们可以对
矩阵求反以返回逻辑矩阵,并使用
+
将其强制为二进制

+!(mat)
#      [,1] [,2] [,3] [,4]
#[1,]    1    1    1    0
#[2,]    1    0    1    1
#[3,]    1    0    0    0
#[4,]    0    0    0    1
数据 种子集(123)
需要注意的是,
矩阵
也是一个函数。这就是为什么很多其他的答案使用变量名称<代码>垫>代码>,你也应该考虑它。
matrix <- +(!matrix)
+!(mat)
#      [,1] [,2] [,3] [,4]
#[1,]    1    1    1    0
#[2,]    1    0    1    1
#[3,]    1    0    0    0
#[4,]    0    0    0    1