Peter Dunn
2004-Nov-11 00:25 UTC
[R] substitute/paste question for using Greek in plot titles
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 -- Dr Peter Dunn (USQ CRICOS No. 00244B) Web: http://www.sci.usq.edu.au/staff/dunn Email: dunn @ usq.edu.au Opinions expressed are mine, not those of USQ. Obviously...
Sundar Dorai-Raj
2004-Nov-11 00:43 UTC
[R] substitute/paste question for using Greek in plot titles
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