一个函数在NA上返回TRUE,NULL,NaN在R?

qed*_*qed 17 r

R中是否有一个函数如下:

isnothing = function(x) {
    is.null(x) | is.na(x) | is.nan(x)
}
Run Code Online (Sandbox Code Playgroud)

Bac*_*lin 12

我也错过了这样的功能,并将其添加到我的.Rprofile年龄.如果有人知道基本功能做同样的事情我也想知道.

is.blank <- function(x, false.triggers=FALSE){
    if(is.function(x)) return(FALSE) # Some of the tests below trigger
                                     # warnings when used on functions
    return(
        is.null(x) ||                # Actually this line is unnecessary since
        length(x) == 0 ||            # length(NULL) = 0, but I like to be clear
        all(is.na(x)) ||
        all(x=="") ||
        (false.triggers && all(!x))
    )
}
Run Code Online (Sandbox Code Playgroud)

作为@shadow提到,NA,NaNNULL有是重要的是了解不同的含义.但是,当我创建包含具有默认值的可选参数的函数时,我发现此函数很有,我希望允许用户通过将它们设置为任何"未定义"值来进行抑制.

一个这样的例子是xlabplot.我永远记得,如果是xlab=NA,xlab=FALSE,xlab=NULLxlab="".有些产生了所需的结果,有些没有,所以我发现在开发代码时使用上述功能很方便,特别是如果其他人也会使用它.


gio*_*mai 5

我相信您基本上是在寻找gtoolsinvalid()函数的作用。

 ?gtools::invalid
Run Code Online (Sandbox Code Playgroud)

例如,

gtools::invalid(NA)
[1] TRUE
gtools::invalid(NULL)
[1] TRUE
gtools::invalid(NaN)
[1] TRUE
Run Code Online (Sandbox Code Playgroud)