do.call() mangles expressions in arguments (PR#174)
Ross Ihaka <ihaka@stat.auckland.ac.nz> writes:
On Wed, 21 Apr 1999 pd@biostat.ku.dk wrote:
f<-function(x)x
f(expression(print("Oops")))
expression(print("Oops"))
do.call("f",list(expression(print("Oops"))))
[1] "Oops"
Something in the do_docall code causes an extra eval of the
argument. Causes trouble with math expressions in labels in
boxplot (do.call("title",...))
I think this is correct behavior. The function "list" evaluates its arguments and when it does the "expression" call gets evaluated.
Oh yes! (D**n! I know I decided to take it easy for a few days, but I seem to have displaced my brain in the process.)
I think that it is boxplot that needs to be fixed. There needs to be some form of quoting for the title (and xlab, ylab arguments). It isn't completely obvious to me what the right solution is. It may require a redesign of boxplot and bxp.
Hmm. The following seems to work for the xlabs problem at least:
for (i in 1:length(pars)) pars[[i]] <- as.call(c(as.name("expression"),
pars[[i]]))
if (plot) {
bxp(groups, width, varwidth = varwidth, notch = notch,
...etc...
(one might want to guard that assignment by an if(is.expression())
thing)
O__ ---- Peter Dalgaard Blegdamsvej 3 c/ /'_ --- Dept. of Biostatistics 2200 Cph. N (*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918 ~~~~~~~~~~ - (p.dalgaard@biostat.ku.dk) FAX: (+45) 35327907 -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- r-devel mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html Send "info", "help", or "[un]subscribe" (in the "body", not the subject !) To: r-devel-request@stat.math.ethz.ch _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._