【问题标题】:Determining Whether a Matrix Has At Least One Zero Element确定矩阵是否至少有一个零元素
【发布时间】:2014-01-13 07:18:42
【问题描述】:

我确信这是微不足道的 - 尽管如此,我们将不胜感激。

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

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

【问题讨论】:

    标签: r matrix


    【解决方案1】:

    生成警告是因为您向if 提供了一个逻辑向量,该向量需要一个值。 any 是一个判断任何个逻辑值是否为TRUE的函数:

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

    还有一个函数all,它确定逻辑向量中的所有值是否为TRUE。

    【讨论】:

    • 谢谢马修,两个很好的答案,但你比费尔南多早到了那里。非常感谢你们两位的快速回复!
    【解决方案2】:

    试试

    0 %in% A
    

    它应该返回 TRUE 或 FALSE。它也适用于北美:

    x = matrix(1:24, ncol = 4)
    x[3, 3] = NA
    
    NA %in% x 
    #TRUE
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-04
      • 1970-01-01
      • 2012-01-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多