假设我写了一个使用一些变量的R脚本。当我运行它时,这些变量使全局R环境变得混乱。为防止这种情况,我如何仅将脚本中使用的变量范围限制为该脚本?注意:我知道一种方法是使用函数,还有其他方法吗?
答案 0 :(得分: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"
sys.source
可能是最直接的解决方案。
sys.source("c:/foo.R", envir=new.env())
如果要访问变量,还可以在附加环境中评估文件。请参阅?sys.source
中的示例,了解如何执行此操作。
答案 1 :(得分:4)
您可以使用local
功能。