我要写一个函数,确定输入等于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
有简单的功能吗? 谢谢!
答案 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