[R] printing a generated function crashes R

From: Mstislav Elagin <elagin_at_wias-berlin.de>
Date: Wed 13 Sep 2006 - 14:15:57 GMT


Dear All,

the last expression in the following code snippet crashes R (version 2.3.1 on Windows XP) when run interactively:

make.bad.function <- function(kind)
{

   zz <- switch(kind,

"1" = 1,
"2" = 2)

   stopifnot( !is.null(zz) )

   eval( bquote( function(x)

                {
                  x + .(zz)
                }))

}

# bad.function <- make.bad.function("5") ## error as expected

bad.function <- make.bad.function("1")
print(bad.function(10)) ## -> 11

bad.function <- make.bad.function("2")
print(bad.function(10)) ## -> 12

bad.function            ## this works if the code is source()'d
print(bad.function)     ## oops!

However, it does work (i.e. prints the body of bad.function) if run non-interactively
(R --vanilla < bad-function.R).

Any ideas why this happens?

Thanks in advance

Mstislav Elagin



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. Received on Thu Sep 14 00:20:38 2006

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.1.8, at Wed 13 Sep 2006 - 16:30:17 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.