2014-01-12 89 views
3

我相信这是微不足道的 - 尽管如此,任何帮助将不胜感激。确定矩阵是否至少有一个零元素

问题很简单:给定一个矩阵,如果所讨论的矩阵至少有一个元素等于零,我想得到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")} 

发出警告。有没有简单的方法来做到这一点?

回答

7

警告。 any是一个功能告诉如果逻辑值中的任意TRUE

any(A==0) 
## [1] TRUE 
any(B==0) 
## [1] FALSE 

还有一个功能all,其确定在逻辑向量中的值的所有TRUE

+0

谢谢马修,两个很好的答案,但你在费尔南多前就到了那里。非常感谢你们这样的快速反应! – HypersonicNinja

4

尝试

0 %in% A 

它应该返回TRUE或FALSE。它适用于NA太:因为你呈现的逻辑载体来if,这要求单一值产生

x = matrix(1:24, ncol = 4) 
x[3, 3] = NA 

NA %in% x 
#TRUE 
相关问题