Only the source functions in a .R file

advertisements

I would like source() to only find and load functions within a .R file.

For example, in the file Analysis.R:

print.hw <- function() {
    print("hello world")
}

x <- 1 + 2
...

When I source("Analysis.R"), it will create the function print.hw but also assign x, which I do not want.

Anyone have any ideas? The best I could find was this question:

Source only part of a file


This works without using regex. It's also probably less computationally efficient than regex solutions. It creates a new environment, sources the entire file, then returns only the functions back to the global environment.

SourceFunctions<-function(file) {
  MyEnv<-new.env()
  source(file=file,local=MyEnv)
  list2env(Filter(f=is.function,x=as.list(MyEnv)),
           envir=parent.env(environment()))
}