Thanks a lot ! regards, Paulo Gustavo Grahl, CFA
On Wed, May 20, 2009 at 8:31 AM, Romain Francois <romain.franc...@dbmail.com> wrote: > Paulo Grahl wrote: >> >> Dear All: >> >> I have a question regarding the behavior of functions. >> Say I define a function that returns another function : >> A <- function(parameters) { >> # calculations w/ parameters returning 'y' >> tmpf <- function(x) { # function of 'y' } >> return(tmpf) >> } >> >> The value of the parameters are stored in an environment local to the >> function. Then I call >> x<- something >> B<-A(x) >> >> When R executes this last statement, does it perform all the >> calculations inside function A again > > no, see this: > >> f <- function( x = 3){ > + function( ){} > + } >> g <- f() >> ls.str( environment(g) ) > x : num 3 >> h <- f(6) >> ls.str( environment(h) ) > x : num 6 >> ls.str( environment(g) ) > x : num 3 > > See also colorRampPalette which uses this feature: > >> colorRampPalette > function (colors, ...) > { > ramp <- colorRamp(colors, ...) > function(n) { > x <- ramp(seq.int(0, 1, length.out = n)) > rgb(x[, 1], x[, 2], x[, 3], maxColorValue = 255) > } > } > <environment: namespace:grDevices> >> pal <- colorRampPalette( c("blue", "white", "red") ) >> pal > function (n) > { > x <- ramp(seq.int(0, 1, length.out = n)) > rgb(x[, 1], x[, 2], x[, 3], maxColorValue = 255) > } > <environment: 0x99aba4c> >> ls.str( environment( pal ) ) > colors : chr [1:3] "blue" "white" "red" > ramp : function (x) >> >> (i.e., all the calculations that >> yield 'y') >> or the value of 'y' is already stored in the function's local environment >> ? >> >> Many thanks. >> Paulo Gustavo Grahl, CFA >> > > -- > Romain Francois > Independent R Consultant > +33(0) 6 28 91 30 30 > http://romainfrancois.blog.free.fr > > > ______________________________________________ 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.