R写一个函数输入等于整数,但输入可能不适用

时间:2019-03-08 17:59:45

标签: r

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

stringToParse = "http://py4e-data.dr-chuck.net/known_by_Anayah.html, we just want Anayah"
print(re.search(r'[_](\w+)\.html', stringToParse).group(1))

我要的是:

> 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

有简单的功能吗? 谢谢!

2 个答案:

答案 0 :(得分:3)

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 package(v0.2.1)于2019-03-08创建


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

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

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

reprex package(v0.2.1)于2019-03-08创建

答案 1 :(得分:0)

根据Numeric comparison difficulty in R 此功能可以轻松完成。请注意,same(tan(pi / 4),1)返回false。

    identical(tan(pi/4),1)
    #[1] FALSE
    eq<-function(x,y){
    isTRUE(all.equal(x, y))
    }
    eq(tan(pi/4),1)
    #[1] TRUE
    eq(3,1)
   #[1] FALSE
     eq(NA,1)
   #[1] FALSE
    eq(1, NaN)
   #[1] FALSE
    eq(1,1)
   #[1] TRUE
    eq(Inf,1)
  #[1] FALSE
    eq(NA,1)
  #[1] FALSE
    eq(NULL,1)
   #[1] FALSE