确定矩阵是否具有至少一个零元素

时间:2014-01-12 22:56:13

标签: r matrix

我确信这是微不足道的 - 尽管如此,任何帮助都会受到赞赏。

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

发出警告。有一种简单的方法可以做到这一点吗?

2 个答案:

答案 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