【发布时间】:2019-05-20 16:55:10
【问题描述】:
在定义 R 函数时,我有时会忽略它依赖于封闭环境中的对象。比如:
a <- 1
fn <- function(x) x + a
如果无意中发生这种情况,可能会导致难以调试的问题。
有没有一种简单的方法来测试fn 是否使用了封闭环境中的对象?
类似:
test(fn=fn, args=list(x=1))
## --> uses 'a' from enclosing environment
【问题讨论】:
-
不是一个直接的答案,但可能会将
exists("a",envir = .GlobalEnv)添加到您的函数中,如果TRUE则打印它来自例如全球环境的消息? -
感谢您对这些问题的指点。
标签: r function debugging testing environment