2017-07-15 29 views
4

我想在完全隔离的环境中的文件夹中运行函数。这个函数有一些它所指向的资源,也在这个文件夹中。将文件递归地映射到环境

我知道如何使用source() R的功能和加载到一个新的环境:

ne <- new.env() 
source("myFuncs.R", ne) 

但是,如果myFuncs.R包含source()电话本身的形式source("helpers.R"),这些功能被加载到全球环境!

我怎样才能递归源文件到一个新的环境?这可以在R完成,而不必以某种方式用正则表达式来解决这个问题吗?

回答

2

重新定义source

ne <- new.env() 
source <- function(file, local = ne, ...) base::source(file, local, ...) 

source("myFuncs.R") 

rm(source) 
+0

这完美地工作!这样一个简单的答案:) –