Skip to content

Passing a call as label to text() works differently when the call involves paste() vs paste0()

3 messages · Duncan Murdoch, Wolfgang Viechtbauer

#
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
#
On 05/09/2022 9:36 a.m., Viechtbauer, Wolfgang (NP) wrote:
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
#
Got it, thanks!

Best,
Wolfgang