我想检查是否有变量在R中定义,而不会出错。我该怎么做呢?

我的尝试(不成功):

> is.na(ooxx)
Error: object 'ooxx' not found
> is.finite(ooxx)
Error: object 'ooxx' not found

谢谢!


当前回答

如果你不介意使用引号,你可以使用:

exists (" x ")

如果你不想使用引号,你可以使用:

exists(deparse(substitute(x)))

其他回答

如果你不介意使用引号,你可以使用:

exists (" x ")

如果你不想使用引号,你可以使用:

exists(deparse(substitute(x)))

如果你在一个函数中,missing()就是你想要的。

exchequer = function(x) {
    if(missing(x)){
        message("x is missing… :-(")
    }
}

exchequer()
x is missing… :-(

你想要exists():

R> exists("somethingUnknown")
[1] FALSE
R> somethingUnknown <- 42
R> exists("somethingUnknown")
[1] TRUE
R> 

是存在的,因为“…”定义”。如。

> exists("foo")
[1] FALSE
> foo <- 1:10
> exists("foo")
[1] TRUE

如果你不想使用引号,你可以使用deparse(substitute())技巧,这是我在?substitute的示例部分中发现的:

is.defined <- function(sym) {
  sym <- deparse(substitute(sym))
  env <- parent.frame()
  exists(sym, env)
}

is.defined(a)
# FALSE
a <- 10
is.defined(a)
# TRUE