Viechtbauer, Wolfgang (NP)
2022-Sep-05 13:36 UTC
[Rd] Passing a call as label to text() works differently when the call involves paste() vs paste0()
Hi all, Maybe a bit of an esoteric observation, but the second one doesn't work properly: x <- 2 plot(NA, xlim=c(0,1), ylim=c(0,1)) text(0.5, 0.55, bquote(paste("x =", .(x)))) text(0.5, 0.45, bquote(paste0("x = ", .(x)))) Note that this has nothing to do in particular with bquote(). This is the same issue: plot(NA, xlim=c(0,1), ylim=c(0,1)) text(0.5, 0.55, as.call(list(quote(paste), "x =", 2))) text(0.5, 0.45, as.call(list(quote(paste0), "x = ", 2))) I had a look at C_text in plot.c, but couldn't figure out why the second one is treated differently. Best, Wolfgang
Duncan Murdoch
2022-Sep-05 13:49 UTC
[Rd] Passing a call as label to text() works differently when the call involves paste() vs paste0()
On 05/09/2022 9:36 a.m., Viechtbauer, Wolfgang (NP) wrote:> Hi all, > > Maybe a bit of an esoteric observation, but the second one doesn't work properly: > > x <- 2 > plot(NA, xlim=c(0,1), ylim=c(0,1)) > text(0.5, 0.55, bquote(paste("x =", .(x)))) > text(0.5, 0.45, bquote(paste0("x = ", .(x)))) > > Note that this has nothing to do in particular with bquote(). This is the same issue: > > plot(NA, xlim=c(0,1), ylim=c(0,1)) > text(0.5, 0.55, as.call(list(quote(paste), "x =", 2))) > text(0.5, 0.45, as.call(list(quote(paste0), "x = ", 2))) > > I had a look at C_text in plot.c, but couldn't figure out why the second one is treated differently.You're using plotmath code, which is documented in ?plotmath. It doesn't execute paste(), it just uses that name for a similar operation. There's no operation named paste0(), so that doesn't work. The paste() operation doesn't add space, so it's more like paste0() in any case. Duncan Murdoch