给定函数f()
如下:
f = function(a) {
if(a > 0) b = 2
c = exists('b')
return(c)
}
如何指定exists()
函数只应在函数f
内搜索?
在空白的环境中,调用f(-5)
会按照我的意愿返回FALSE
,但如果我这样做
b = "hello"
f(-5)
然后我得到TRUE
。即使用户在函数f(-5)
之外的其他地方定义了FALSE
,我如何让b
返回f
?
我希望这与where
的{{1}}参数有关,但我无法弄清楚调用此参数的正确环境是什么。我仍然没有把头完全包裹在R ......的环境中......
谢谢!
答案 0 :(得分:10)
只需使用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