如何限制脚本中使用的变量的范围?

时间:2011-09-01 19:24:49

标签: r scope

假设我写了一个使用一些变量的R脚本。当我运行它时,这些变量使全局R环境变得混乱。为防止这种情况,我如何仅将脚本中使用的变量范围限制为该脚本?注意:我知道一种方法是使用函数,还有其他方法吗?

2 个答案:

答案 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功能。