Hi Rik, I don't fully understand it, but setting local=TRUE to your source() calls will avoid the specific error you noted.
Best, Ista On Fri, Oct 5, 2012 at 3:47 PM, Rik Verdonck <rik.verdo...@bio.kuleuven.be> wrote: > Dear R-community, > > > I have been experiencing this issue with functions within a function and > I can kind of feel where the problem is (environments, closures etc), > but I don't manage to solve it. > > I will sketch it with an example: > > #We have two simple "inner" functions: > > ############## INNER FUNCTION1 ################# > innerfunction1<-function() > { > ab<-a+b > cd<-c+d > innerfunctionlist<-list("ab"=ab,"cd"=cd) > } > ################################################ > > ############## INNER FUNCTION2 ################# > innerfunction2<-function() > { > print(AB+CD) > } > ################################################ > > #And we have a main script with a number of predefined variables. > #This shapes an environment in which variables that will be used > #by the inner function are defined. > ############# MAIN SCRIPT ################ > a=1 > b=2 > c=3 > d=4 > > > #source(filepath/to/innerfunction1) > outcome1<-innerfunction1() > > AB <-outcome1$ab > CD <-outcome1$cd > > #source(filepath/to/innerfunction2) > innerfunction2() > > > ################################################# > > > > #So far so good. No problem if you run this. > #The problem emerges if you want to make the main script a function. > #So now I wrap it into a function: > > > main<-function() > { > a=1 > b=2 > c=3 > d=4 > > #source(filepath/to/innerfunction1) > outcome1<-innerfunction1() > > AB <-outcome1$ab > CD <-outcome1$cd > > #source(filepath/to/innerfunction2) > innerfunction2() > } > > > > when I now run main() in an environment where all these variables are not > defined, I will get this error > message: > > Error in innerfunction1() : object 'a' not found > > I can solve this by defining the variables a, b, c and d. However, I > will then get next error message: > > Error in print(AB + CD) : object 'AB' not found > > > I think I see what happens. The right variables are not present > in the right environment. Probably I did something silly, but I really > don't see how to solve this. Can someone please help me? > > Many thanks! > Rik Verdonck > University of Leuven > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.