[R] substitute/paste question for using Greek in plot titles
Sundar Dorai-Raj
sundar.dorai-raj at pdf.com
Thu Nov 11 01:43:41 CET 2004
Peter Dunn wrote:
> Hi all
>
> I am having troubles making sense of why code (1)
> below fails but code (2) below works.
>
> Code (1):
>
> > phi.1 <- 1
> > plot(0 ~ 0,
> + main=substitute(paste("A vaue for ",phi," = ",phival),
> list(phival=phi.1)) )
>
> Error in paste("The two deviances for ", phi, " = ", 2) :
> Object "phi" not found
>
> But this works:
>
> Code (2):
> > plot(0,0,
> + main=substitute(paste("A value for ",phi," = ",phival),
> list(phival=phi.1)) )
> >
>
> It appears that if the plot command takes the formula style entry,
> the substitue/paste fails.
>
> Is this documented as a feature (I couldn't find it if that is the
> case), or is it a bug? If it is a feature, it is a subtle difference
> between (1) and (2) that has potential to be quite frustrating!
>
> Perhaps I should just upgrade to version 2.0.0, though I can't see
> anything in the Release Notes that might cause this.
>
> Thanks.
>
> P.
>
> > version
> _
> platform i686-pc-linux-gnu
> arch i686
> os linux-gnu
> system i686, linux-gnu
> status
> major 1
> minor 9.1
> year 2004
> month 06
> day 21
> language R
>
>
Peter,
Because in the first couple of lines of plot.formula we see this:
dots <- m$...
dots <- lapply(dots, eval, data, parent.frame())
which for your case is equivalent to:
expr <- substitute(paste("A vaue for ",phi," = ",phival),
list(phival=phi.1))
eval(expr)
which returns an error saying "phi" cannot be found which is the correct
behaviour of eval. I'll let others comment on whether or not this is a
bug in plot.formula but you can always get around it by calling title:
plot(0 ~ 0)
title(main = expr)
which is exactly what your second example is doing in plot.default.
HTH,
--sundar
More information about the R-help
mailing list