Как ограничить область действия переменных, используемых в скрипте? - PullRequest
7 голосов
/ 01 сентября 2011

Допустим, я написал скрипт R, который использует некоторые переменные.Когда я запускаю его, эти переменные загромождают глобальную R-среду.Чтобы предотвратить это, как ограничить область действия переменных, используемых в скрипте, только этим скриптом?Примечание: я знаю, что одним из способов является использование функций, есть ли другие способы?

Ответы [ 2 ]

11 голосов
/ 01 сентября 2011

Просто используйте аргумент 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, чтобы узнать, как это сделать.

4 голосов
/ 01 сентября 2011

Вы можете использовать функцию local.

...