foo2 could be written: foo3 <- function(x, y = x) { force(y); x <- 0; y }
to make it clear that evaluation of y is being forced. See ?force On 9/28/06, Ulrich Keller <[EMAIL PROTECTED]> wrote: > Hello, > > and sorry if this is already explained somewhere. I couldn't find anything. > > R (2.3.1, Windows) seems to perform some kind of lazy evaluation when > evaluating defaults in function calls that, at least for me, leads to > unexpected results. Consider the following, seemingly equivalent functions: > > > foo1 <- function(x, y=x) { > + x <- 0 > + y > + } > > foo1(1) > [1] 0 > > foo2 <- function(x, y=x) { > + y <- y > + x <- 0 > + y > + } > > foo2(1) > [1] 1 > > Obviously, y is not evaluated until it is used in some way. I would > expect it to be evaluated where it is defined. Is this intended behavior? > Thanks for clarifying, > > Uli > > ______________________________________________ > R-help@stat.math.ethz.ch 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@stat.math.ethz.ch 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.