相关疑难解决方法(0)

R强制本地范围

这可能不是正确的术语,但希望我可以理解我的观点.

我经常最终做类似的事情:

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提供此功能,我也想知道.

r

37
推荐指数
6
解决办法
7355
查看次数

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

假设我有一个功能:

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

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

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

任何建议也受到欢迎.

r

9
推荐指数
1
解决办法
4987
查看次数

确保函数不使用全局变量

这可能与类似的问题有点相反。我希望R在代码中的任何位置中止\警告,如果函数在父环境中使用了变量。是否有一些基本的选择可以实现?我想要一个会话通用的解决方案,而不是特定的检查。谢谢。

scope r

5
推荐指数
1
解决办法
304
查看次数

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)

testing debugging environment r function

5
推荐指数
1
解决办法
68
查看次数

标签 统计

r ×4

debugging ×1

environment ×1

function ×1

scope ×1

testing ×1