From: Gabor Grothendieck <ggrothendieck_at_gmail.com>

Date: Mon, 16 Jul 2007 20:12:08 -0400

R-devel_at_r-project.org mailing list

https://stat.ethz.ch/mailman/listinfo/r-devel Received on Tue 17 Jul 2007 - 00:15:30 GMT

Date: Mon, 16 Jul 2007 20:12:08 -0400

On 7/16/07, Deepayan Sarkar <deepayan.sarkar_at_gmail.com> wrote:

*> Hi,
**>
*

> I'm trying to understand whether the use of substitute() is

*> appropriate/documented for plotmath annotation. The following two
**> calls give the same results:
**>
**> > plot(1:10, main = expression(alpha == 1))
**> > do.call(plot, list(1:10, main = expression(alpha == 1)))
**>
**> But not these two:
**>
**> > plot(1:10, main = substitute(alpha == a, list(a = 2)))
**> > do.call(plot, list(1:10, main = substitute(alpha == a, list(a = 2))))
**> Error in as.graphicsAnnot(main) : object "alpha" not found
**>
**> (as a consequence, xyplot(..., main = substitute(alpha)) doesn't
**> currently work.)
*

If your question is really about do.call then use the quote = TRUE argument. Then both of the above work:

plot(1:10, main = substitute(alpha == a, list(a = 2))) do.call(plot, list(1:10, main = substitute(alpha == a, list(a = 2))), quote = TRUE)

plot(1:10, main = expression(alpha == 1)) do.call(plot, list(1:10, main = expression(alpha == 1)), quote = TRUE)

Another possibility is just to make sure you are passing an expression so that the first one would become:

plot(1:10, main = substitute(alpha == a, list(a = 2))) do.call(plot, list(1:10, main = as.expression(substitute(alpha == a, list(a = 2)))))

*>
*

> On the other hand, this works:

*>
**> > foo <- function(x) plot(1, main = x)
**> > foo(substitute(alpha))
**>
**> I'm not sure how to interpret ?plotmath; it says
**>
**> If the 'text' argument to one of the text-drawing functions
**> ('text', 'mtext', 'axis', 'legend') in R is an expression, the
**> argument is interpreted as a mathematical expression...
**>
**> and uses substitute() in its examples, but
**>
**> > is.expression(substitute(alpha == a, list(a = 1)))
**> [1] FALSE
**>
*

I am not sure what examples you are referring to but if you read the Value section in ?substitute it does say that substitute typically returns call objects but may return a name object and in principle can return others too so they need not be expressions.

R-devel_at_r-project.org mailing list

https://stat.ethz.ch/mailman/listinfo/r-devel Received on Tue 17 Jul 2007 - 00:15:30 GMT

Archive maintained by Robert King, hosted by
the discipline of
statistics at the
University of Newcastle,
Australia.

Archive generated by hypermail 2.2.0, at Tue 17 Jul 2007 - 04:36:30 GMT.

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