这可能是不正确的术语,但希望我能阐明我的观点。我经常会做类似的事情:myVar = 1f <- function(myvar) { return(myVar); }# f(2) = 1 nowR高兴地使用了函数范围之外的变量,这让我抓狂了,想知道如何获得结果。是否有任何选项说“强迫我仅使用该函数范围内先前已分配值的变量”?use strict例如,Perl就是这样做的。但我不知道R等于my。编辑:谢谢,我知道我以不同的方式大写了它们。实际上,该示例是专门为说明此问题而创建的!我想知道在执行此操作时R是否可以自动警告我。编辑2:另外,如果Rkward或其他IDE提供此功能,我也想知道。
3 回答
白衣非少年
TA贡献1155条经验 获得超0个赞
checkUsage在codetools包是有帮助的,但不会让你一路都有。在myVar未定义的干净会话中,
f <- function(myvar) { return(myVar); }
codetools::checkUsage(f)
给
<anonymous>: no visible binding for global variable ‘myVar’
但是一旦定义好myVar,checkUsage就会很高兴。
?codetools在codetools包装中看到:有可能有用的东西:
> findGlobals(f)
[1] "{" "myVar" "return"
> findLocals(f)
character(0)
达令说
TA贡献1821条经验 获得超6个赞
使用get(x, inherits=FALSE)将强制本地范围。
myVar = 1
f2 <- function(myvar) get("myVar", inherits=FALSE)
f3 <- function(myvar){
myVar <- myvar
get("myVar", inherits=FALSE)
}
输出:
> f2(8)
Error in get("myVar", inherits = FALSE) : object 'myVar' not found
> f3(8)
[1] 8
- 3 回答
- 0 关注
- 590 浏览
添加回答
举报
0/150
提交
取消