【问题标题】:R: If statement contains is.null as one of the conditions connected by ORR:如果语句包含 is.null 作为 OR 连接的条件之一
【发布时间】:2017-12-01 02:34:58
【问题描述】:

我有一个变量mat,它被初始化为NULL。我有一个迭代过程,只会在某些条件下填充垫子。在此过程之后,我检查mat 是否有超过一定数量的行,如果没有,则执行其他操作。

我正在寻找一种简洁的方式来编写此条件,理想情况下,类似于is.null(mat) | nrow(mat) < n。虽然如果is.null(mat)TRUE并且它们是通过OR连接的,那么整个语句应该是TRUE,但是nrow(mat) < n会报错。

我可以通过将其重写为两个条件并将# do something 代码复制到这两个位置来解决这个问题,但是有更简洁的方法吗?

mat = NULL

for(i in 1:10){
  if(runif(1) > 0.8){
    mat = rbind(mat, c(1,2,3))
  } 
}

if(is.null(mat)){
  # do something...
} else if(nrow(mat) < 3){
  # do something...
}

【问题讨论】:

    标签: r logical-operators


    【解决方案1】:

    您可以使用| 的短路版本,即||

    is.null(mat) || nrow(mat) < n
    

    来自帮助:

    & 和 && 表示逻辑 AND 和 |和 ||表示逻辑或。较短的形式执行元素比较的方式与算术运算符大致相同。较长的形式从左到右评估,仅检查每个向量的第一个元素。仅在确定结果之前进行评估。较长的形式适用于编程控制流,通常在 if 子句中首选。

    【讨论】:

      猜你喜欢
      • 2022-10-12
      • 2022-01-08
      • 2021-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-02
      • 1970-01-01
      相关资源
      最近更新 更多