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

标签 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 有关exists()的参数但我无法弄清楚调用此参数的正确环境是什么。我还没有完全了解 R 中的环境......

谢谢!

最佳答案

只需使用 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

关于r - 如何测试函数环境中是否存在变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31095561/

相关文章:

common-lisp - Common Lisp 中 &environment 的作用是什么?

ruby - <RubyGems> 如何更改 gem 环境设置?

function - JDBC Postgres 存储函数调用返回 setof 'myType'

javascript - 加载另一个具有相同功能的图像会卸载另一个图像

r - 通缉 : facet_grid - facet_wrap hybrid solution

ShinyApp 中的 renderPrint 选项

function - 如何正确地将 Win32 类对象传递给函数

linux -/usr/bin/env 关于 shebang 行特性的问题

r - 使用 knit/rmarkdown 突出显示 bash 代码

r - 将每日股票数据转换为时间序列对象时的问题