如何检测R函数中的自由变量名称

zha*_*nxw 9 r

假设我有一个功能:

f <- function() {
  x + 1
}
Run Code Online (Sandbox Code Playgroud)

x是一个自由变量,因为它的值没有在函数中定义f.有没有办法可以x从定义的函数中获取变量名称,比如说f

我在维护别人的旧R代码的同时问这个问题.使用了很多自由变量,这使调试变得困难.

任何建议也受到欢迎.

mne*_*nel 7

编码工具编码工具包具有以下功能:用于此目的,例如,findGlobals

findGlobals(f, merge=FALSE)[['variables']]
# [1] "x"
Run Code Online (Sandbox Code Playgroud)

如果我们重新定义函数以具有命名参数,x则不返回任何变量.

f2 <- function(x){
  x+1
}
findGlobals(f2, merge=FALSE)[['variables']]
# character(0)
Run Code Online (Sandbox Code Playgroud)