假设我写了一个使用一些变量的R脚本.当我运行它时,这些变量使全局R环境变得混乱.为防止这种情况,我如何仅将脚本中使用的变量范围限制为该脚本?注意:我知道一种方法是使用函数,还有其他方法吗?
Jos*_*ich 11
只需使用local=TRUE参数source并评估source除您的全局环境之外的其他地方.以下是一些方法(假设您不希望能够访问脚本中的变量). foo.R只是包含print(x <- 1:10).
do.call(source, list(file="c:/foo.R", local=TRUE), envir=new.env())
# [1] 1 2 3 4 5 6 7 8 9 10
ls()
# character(0)
mysource <- function() source("c:/foo.R", local=TRUE)
mysource()
# [1] 1 2 3 4 5 6 7 8 9 10
ls()
# [1] "mysource"
Run Code Online (Sandbox Code Playgroud)
sys.source 可能是最直接的解决方案.
sys.source("c:/foo.R", envir=new.env())
Run Code Online (Sandbox Code Playgroud)
如果要访问变量,还可以在附加环境中评估文件.有关?sys.source如何执行此操作,请参阅示例.