若为NULL或满足条件,则在R中继续



我想检查x是否为NULL/NA/NAN,如果是,则执行该函数。如果x不在最小值和最大值之间,我也想执行这个函数。

如果我这样做:

#Checks if blank
isnothing <-  function(x) {
any(is.null(x))  || any(is.na(x))  || any(is.nan(x)) 
}

x <- as.numeric(NULL)
min <- 25
max <- 45
#Actual function
if (isnothing(x) | !between(x,min,max)) {
#Do something
}

我在R 中得到了可怕的"if语句中的自变量长度为零"错误

我也试过:

x <- as.numeric(NULL)
min <- 25
max <- 45
if (isnothing(x) |(!isnothing(x) & !between(x,min,max))) {
#Do something
}

这仍然不起作用

---------[编辑]----------

感谢下面的答案,我有以下内容:

#Checks if blank
isnothing <-  function(x) {
any(is.null(x),is.na(x),is.nan(x))
}
y <- NULL
x <- as.numeric(y)
min <- 25
max <- 45
if (any(isnothing(y), !between(x,min,max))) {
print("Yep")
}else{
print("Nope")
}

哪个输出"是">

它有效,但看起来很乱。

组合函数并使用allany。更好的方法可能存在:

isnothing <-  function(x,min, max) {
if (all(any(is.null(x), is.na(x), is.nan(x)), between(x,min,max))) {
print("Yep")
}
else{
print("Nope")
}
}
isnothing(x,min,max)
[1] "Nope"

以上的变体:

isnothing <-  function(x,min, max) {
if (!any(is.null(x), is.na(x), is.nan(x))){
if(all(between(x,min,max))) {
print("X is between min and max")
}
else{
print("X is not between min and max")
}
}
else{
print("X is null, nan or NA")
}
}
isnothing(x,min,max)
[1] "X is between min and max"
isnothing(NULL,min,max)
[1] "X is null, nan or NA"
isnothing(55,min,max)
[1] "X is not between min and max"

相关内容

  • 没有找到相关文章

最新更新