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
______________________________________________
[email protected] 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.