[R] source() vs attach()0

Stefan Zeugner stefan.zeugner at ulb.ac.be
Tue Nov 10 17:14:47 CET 2009


Hello,
After hours of googling I could not resolve the following (although it 
seems simple):

I would like to put subfunctions in a separate .R file that is then 
called with source() from inside several "main" functions. A crude 
example would be as follows:

**** file subtest.R **********
subtest <- function() {
  foo <<- foo+1
  }
******************************


*** main function ************
test<-function(foo) {
  source("test.R",local=TRUE)
  subtest()
  return(foo)
  }
******************************

Then executing the code
 > test(1)
works as prescribed.
But of course, each function call to test() 'sources' (i.e. parse() and 
eval()) the file subtest.R again and again. (try e.g. changing line 2 in 
subtest.R to 'foo<<- foo +2' and run 'test(1)' )


How can I 'attach' the function subtest inside the main function, such 
that it is not evaluated again at each function call?

And this while maintaining the above 'subfunction' functionality (i.e. 
attaching the subfunction under the right environment)?

I was not able to resolve that - thanks in advance for any help!

all the best
Stefan




More information about the R-help mailing list