如何测试函数环境中是否存在变量?
How do I test for existence of a variable within a function's environment?
给定函数f()
如下:
f = function(a) {
if(a > 0) b = 2
c = exists('b')
return(c)
}
如何指定 exists()
函数只在函数 f
内搜索?
在空白环境下,调用 f(-5)
将 return FALSE
如我所愿,但如果我这样做
b = "hello"
f(-5)
然后我得到 TRUE
。如何将 f(-5)
变为 return FALSE
,即使用户在其脚本中的其他地方定义了 b
函数 f
?
我预计这与 exists()
的 where
参数有关,但我无法弄清楚调用此参数的正确环境是什么。我仍然没有完全了解 R 中的环境...
谢谢!
只需使用 exists 的 inherits=
参数。有关详细信息,请参阅 ?exists
帮助页面
b <- 100
f <- function(a) {
if(a > 0) b <- 2
c <- exists('b', inherits=FALSE)
return(c)
}
f(5)
# [1] TRUE
f(-5)
# [1] FALSE
给定函数f()
如下:
f = function(a) {
if(a > 0) b = 2
c = exists('b')
return(c)
}
如何指定 exists()
函数只在函数 f
内搜索?
在空白环境下,调用 f(-5)
将 return FALSE
如我所愿,但如果我这样做
b = "hello"
f(-5)
然后我得到 TRUE
。如何将 f(-5)
变为 return FALSE
,即使用户在其脚本中的其他地方定义了 b
函数 f
?
我预计这与 exists()
的 where
参数有关,但我无法弄清楚调用此参数的正确环境是什么。我仍然没有完全了解 R 中的环境...
谢谢!
只需使用 exists 的 inherits=
参数。有关详细信息,请参阅 ?exists
帮助页面
b <- 100
f <- function(a) {
if(a > 0) b <- 2
c <- exists('b', inherits=FALSE)
return(c)
}
f(5)
# [1] TRUE
f(-5)
# [1] FALSE