我如何将R中矩阵的二进制数字(0和1)求逆?
我已经通过使用R包pixmap读取pgm文件创建了一个二进制数字矩阵,但我正在尝试反转二进制数字(使所有0变为1,所有1变为0)并再次输出矩阵。有没有一种有效的方法可以做到这一点?你可以试试我如何将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)
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