【问题标题】:Testing whether a value is equal to a string value when it can also be NULL当一个值也可以为 NULL 时,测试一个值是否等于一个字符串值
【发布时间】:2022-07-06 14:51:53
【问题描述】:

我有一个值,它可以是 3 个字符串之一,也可以是 NULL。当值为NULL时,下面的代码不起作用

value <- NULL

if( value == "test" ){
    print("1")
} else {
    print("2")
}

看来我必须编写如下代码才能使其工作:

if ( !is.null(value) && value== "test" ) {
    print("1")
} else {
    print("2")
}

然而,这样写似乎不必要地复杂和混乱。

有没有更简洁的方法来做到这一点?

【问题讨论】:

    标签: r


    【解决方案1】:

    你可以在baseR中使用函数setequal

    value <- NULL
    setequal(value, "test")
    [1] FALSE
    

    【讨论】:

      【解决方案2】:

      你可以用isTRUE()包围条件

      value <- NULL
      
      if ( isTRUE(value == "test") ) {
          print("1")
      } else {
          print("2")
      }
      
      # [1] "2"
      

      或将== 替换为identical()

      identical(value, "test")
      
      # [1] FALSE
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-28
        • 2019-10-28
        • 2019-09-29
        相关资源
        最近更新 更多