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