[R] Evaluation of defaults in functions
    Deepayan Sarkar 
    deepayan.sarkar at gmail.com
       
    Thu Sep 28 22:06:03 CEST 2006
    
    
  
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?
Yes. For a similar example see the 'logplot' function and related discussion in
http://cran.r-project.org/doc/manuals/R-lang.html#Substitutions
-Deepayan
    
    
More information about the R-help
mailing list