将参数分配给 null 与函数中没有任何内容

Assigning an argument to null verses nothing in the function

据我了解,如果我有如下函数:

hello1<- function(pillow){
       if (missing(pillow)){
      stop("You need to enter pillow")
    }
pillow
}

hello1() 停止 returns 我想要的消息:

hello2<- function(pillow){
       if (is.null(pillow)){
      stop("You need to enter pillow")
    }
pillow
}

hello2() 停止并 returns 以下消息: Error in hello2() : argument "pillow" is missing, with no default

hello3<- function(pillow=NULL){
       if (is.null(pillow)){
      stop("You need to enter pillow")
    }
pillow
}

hello3() 停止 returns 我想要的消息:

hello4<- function(pillow=NULL){
           if (missing(pillow)){
          stop("You need to enter pillow")
        }
    pillow
    }

hello4() 停止 returns 我想要的消息:

总而言之,当参数设置为 NULL 时,我可以使用 missing()is.null() 获得我想要的消息,但是,当参数设置为空时,我可以只用 missing() 而不是 is.null() 得到我想要的消息。话虽如此,我想知道在参数中分配 NULL 与不分配 NULL 相关的利弊是什么。

使用 missing 的最大优势是您可以明确要测试的内容(是否给出参数?)。默认值 NULL 不太明确,因为 NULL 可能是某些函数的正确值。

一种特殊情况是参数由另一个函数计算,在某些特殊情况下它计算的值为 NULL。