首页 > 解决方案 > R写一个函数输入等于整数,但输入可能是NA

问题描述

我想写一个函数,确定输入等于1,但输入可能包括(NA NULL)。

> equals1 <- function(x){
+   return(x==1)
+ }

> equals1(1)
[1] TRUE
> equals1(Inf)
[1] FALSE
> equals1(NA)
[1] NA
> equals1(NULL)
logical(0)
> equals1(NaN)
[1] NA

我想要的如下:</p>

equals1<-function(x){
   if(is.null(x)){
     return(FALSE)
     }else if(is.na(x)){
       return(FALSE)
     }else{return(x==1)}
}
c(equals1(1),equals1(Inf),equals1(NA),equals1(NULL),equals1(NaN))
# [1]  TRUE FALSE FALSE FALSE FALSE

有简单的功能吗?谢谢!

标签: r

解决方案


identical可以做到这一点。

identical(1, 1)
#> [1] TRUE
identical(1, Inf)
#> [1] FALSE
identical(1, NA)
#> [1] FALSE
identical(1, NULL)
#> [1] FALSE
identical(1, NaN)
#> [1] FALSE

reprex 包(v0.2.1)于 2019 年 3 月 8 日创建


你可以像这样编写一个简单的包装器:

equals1 <- function(x)identical(x, 1)

c(equals1(1),equals1(Inf),equals1(NA),equals1(NULL),equals1(NaN))
#> [1]  TRUE FALSE FALSE FALSE FALSE

reprex 包(v0.2.1)于 2019 年 3 月 8 日创建


推荐阅读