[R] Evaluation of defaults in functions

Ulrich Keller uhkeller at web.de
Thu Sep 28 21:49:49 CEST 2006


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



More information about the R-help mailing list