On 23/02/2015 3:57 PM, Daniel Kaschek wrote: > Hi everybody, > > with the following code I generate a list of functions. Each function > reflects a "condition". When I evaluate this list of functions by > another lapply/sapply, I get an unexpected result: all values coincide. > However, when I uncomment the print(), it works as expected. Is this a > bug or a feature? >
Arguments aren't evaluated until they are used. The force() function can be used to force evaluation when you want it. This is a feature: it allows you to have arguments that are never evaluated, because they are never used, or defaults that depend on things that are calculated within the function. Duncan Murdoch > conditions <- 1:4 > test <- lapply(conditions, function(mycondition){ > #print(mycondition) > myfn <- function(i) mycondition*i > return(myfn) > }) > > sapply(test, function(myfn) myfn(2)) > > > > Cheers, > Daniel > ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel