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