我希望source()
仅在.R
文件中查找和加载函数。
例如,在Analysis.R文件中:
print.hw <- function() {
print("hello world")
}
x <- 1 + 2
...
当我source("Analysis.R")
时,它会创建函数print.hw
,但也会分配x
,这是我不想要的。
有人有什么想法吗?我能找到的最好的就是这个问题:
答案 0 :(得分:6)
这不使用正则表达式。它也可能比正则表达式解决方案的计算效率更低。它创建一个新环境,获取整个文件,然后仅将函数返回给全局环境。
SourceFunctions<-function(file) {
MyEnv<-new.env()
source(file=file,local=MyEnv)
list2env(Filter(f=is.function,x=as.list(MyEnv)),
envir=parent.env(environment()))
}
答案 1 :(得分:0)