[R] use of bquote
pdalgd at gmail.com
Fri Nov 22 09:14:24 CET 2013
On 22 Nov 2013, at 07:53 , Rolf Turner <r.turner at auckland.ac.nz> wrote:
> On 11/22/13 18:47, William Dunlap wrote:
>>> a <- 2; b <- 3; xyplot(1:10 ~ a*(1:10), sub = c(bquote(a == .(a) ~ b==.(b))))
>>> the subtitle contains three copies of the "a = 2 b = 3" phrase.
>>> Why does it do that? How do I tell it to give me only one copy?
>> To avoid it don't wrap bquote() with c(). The following does what you asked for:
>> a <- 2; b <- 3; xyplot(1:10 ~ a*(1:10), sub = bquote(a == .(a) ~ b==.(b)))
> Not for me it doesn't. Without the c() wrapper, I get no subtitle at all. Your recipe seems to
> work with base graphics and plot() but not with lattice and xyplot(). Also the c() wrapper
> seems to have no impact when used with plot().
> Moreover I am mystified by the impact of the c() wrapper when used with xyplot().
> The result returned by bquote() has class "call". The result returned by c(bquote(...)) is a
> list, of length 1, whose sole entry is of class "call" and is, as one might expect, equal to the
> result returned by bquote().
> But why should passing this length-1 list as the value for "sub" cause a triplication of the
I dunno either, but a hint at the reason would be to look at what happens with
xyplot(0 ~ 1, sub=list(quote(1+1)))
When you do computing on the language, sometimes quote()’ing is not sufficient protection against evaluation. That’s what expression objects are for.
A solution seems to be
xyplot(0 ~ 1, sub=as.expression(
bquote(pi==.(pi) ~ e==.(exp(1)))
Peter Dalgaard, Professor,
Center for Statistics, Copenhagen Business School
Solbjerg Plads 3, 2000 Frederiksberg, Denmark
Email: pd.mes at cbs.dk Priv: PDalgd at gmail.com
More information about the R-help