我确信这是微不足道的 - 尽管如此,任何帮助都会受到赞赏。
问题很简单:给定一个矩阵,如果所讨论的矩阵至少有一个元素等于零,我想得到TRUE
。所以,检查
A <- matrix(c(1, 2, 3, 4, 5, 0), nrow = 2, ncol = 3, byrow = TRUE)
> A
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 0
将返回TRUE
,而
B <- matrix(c(1, 2, 3, 4, 5, 6), nrow = 2, ncol = 3, byrow = TRUE)
> B
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6
会返回FALSE
。
像
这样的东西if ( A == 0 ) { cat("\nZero detected")}
发出警告。有一种简单的方法可以做到这一点吗?
答案 0 :(得分:7)
生成警告是因为您要向if
呈现逻辑向量,该向量需要单个值。 any
是一个函数,用于判断任何逻辑值是否为TRUE
:
any(A==0)
## [1] TRUE
any(B==0)
## [1] FALSE
还有一个函数all
,用于确定逻辑向量中所有值是否为TRUE
。
答案 1 :(得分:4)
尝试
0 %in% A
它应该返回TRUE或FALSE。它也适用于NA:
x = matrix(1:24, ncol = 4)
x[3, 3] = NA
NA %in% x
#TRUE