我想检查是否有变量在R中定义,而不会出错。我该怎么做呢?
我的尝试(不成功):
> is.na(ooxx)
Error: object 'ooxx' not found
> is.finite(ooxx)
Error: object 'ooxx' not found
谢谢!
我想检查是否有变量在R中定义,而不会出错。我该怎么做呢?
我的尝试(不成功):
> is.na(ooxx)
Error: object 'ooxx' not found
> is.finite(ooxx)
Error: object 'ooxx' not found
谢谢!
当前回答
你想要exists():
R> exists("somethingUnknown")
[1] FALSE
R> somethingUnknown <- 42
R> exists("somethingUnknown")
[1] TRUE
R>
其他回答
如果你不介意使用引号,你可以使用:
exists (" x ")
如果你不想使用引号,你可以使用:
exists(deparse(substitute(x)))
是存在的,因为“…”定义”。如。
> exists("foo")
[1] FALSE
> foo <- 1:10
> exists("foo")
[1] TRUE
在某些情况下,您可能并不确切知道要查找的变量的名称,例如当队列系统创建了一个结果数组时。这些问题可以用“ls”及其参数“pattern”来解决,它需要一个正则表达式。
“exists”函数可以这样重新实现
exists <-function(variablename) {
#print(ls(env=globalenv()))
return(1==length(ls(pattern=paste("^",variablename,"$",sep=""),env=globalenv())))
}
在准备这个答案时,我有点惊讶于从函数中调用ls()时对环境规范的需求。所以,谢谢你,stackoverflow!还有一个“all.names”属性,我本应该将其设置为true,但我省略了它。
你想要exists():
R> exists("somethingUnknown")
[1] FALSE
R> somethingUnknown <- 42
R> exists("somethingUnknown")
[1] TRUE
R>
如果你在一个函数中,missing()就是你想要的。
exchequer = function(x) {
if(missing(x)){
message("x is missing… :-(")
}
}
exchequer()
x is missing… :-(