限制变量范围

csg*_*pie 11 scope r

我正在尝试编写一个函数,它限制了R变量的范围.例如,

source("LimitScope.R")
y = 0
f = function(){
   #Raises an error as y is a global variable
   x = y
}
Run Code Online (Sandbox Code Playgroud)

我想过测试变量环境,但不确定如何做到这一点.

为什么呢

我教R给本科生.在他们的前几个实践中,他们中的一些人总是忘记变量范围,因此他们提交的函数不起作用.例如,我总是得到类似的东西:

n = 10
f = function(x){
  #Raises an error
  #as I just source f and test it for a few test cases.
  return(x*n)
}
Run Code Online (Sandbox Code Playgroud)

我正在完成一个能够"关闭"范围的快速功能.你可以想象它不一定特别强大,因为它只是为少数实用提供.

dei*_*nst 5

我不确定您是否想要这样做,但该local()函数应该有所帮助,库也应该有所帮助codetools

在你的例子中,尝试

f = local( function() { ... }, baseenv())
Run Code Online (Sandbox Code Playgroud)

它并不完全符合您的要求,但它应该会让您更接近。