如何在函数环境中测试变量是否存在?

时间:2015-06-28 02:27:46

标签: r function environment

给定函数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 ......的环境中......

谢谢!

1 个答案:

答案 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