[R] Evaluation of defaults in functions
Gabor Grothendieck
ggrothendieck at gmail.com
Thu Sep 28 23:32:57 CEST 2006
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 <uhkeller at web.de> 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 at 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.
>
More information about the R-help
mailing list