这可能不是正确的术语,但希望我可以理解我的观点.
我经常最终做类似的事情:
myVar = 1
f <- function(myvar) { return(myVar); }
# f(2) = 1 now
Run Code Online (Sandbox Code Playgroud)
R愉快地使用了函数范围之外的变量,这让我摸不着头脑,想知道我怎么可能得到我的结果.
是否有任何选项说"强迫我只使用之前已在此功能范围内分配值的变量"?use strict例如,Perl就是这样做的.但我不知道R有相当于my.
编辑:谢谢,我知道我对他们的看法不同.实际上,这个例子是专门为说明这个问题而创建的!
我想知道当我这样做时R是否可以自动警告我.
编辑2:此外,如果Rkward或其他IDE提供此功能,我也想知道.
假设我有一个功能:
f <- function() {
x + 1
}
Run Code Online (Sandbox Code Playgroud)
这x是一个自由变量,因为它的值没有在函数中定义f.有没有办法可以x从定义的函数中获取变量名称,比如说f?
我在维护别人的旧R代码的同时问这个问题.使用了很多自由变量,这使调试变得困难.
任何建议也受到欢迎.
这可能与类似的问题有点相反。我希望R在代码中的任何位置中止\警告,如果函数在父环境中使用了变量。是否有一些基本的选择可以实现?我想要一个会话通用的解决方案,而不是特定的检查。谢谢。
定义R函数时,有时会想不到它依赖于封闭环境中的对象。就像是:
a <- 1
fn <- function(x) x + a
Run Code Online (Sandbox Code Playgroud)
如果这是无意发生的,则可能导致难以调试的问题。
有没有简单的方法可以测试是否fn使用封闭环境中的对象?
就像是:
test(fn=fn, args=list(x=1))
## --> uses 'a' from enclosing environment
Run Code Online (Sandbox Code Playgroud)