do.call() mangles expressions in arguments (PR#174)

Peter Dalgaard BSA p.dalgaard@biostat.ku.dk
22 Apr 1999 01:21:18 +0200


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
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._