Use a variable within a plotmath expression Use a variable within a plotmath expression r r

Use a variable within a plotmath expression


Use bquote(). Here is an example with dummy data:

set.seed(1)DF <- data.frame(A = rnorm(100), B = rnorm(100))mod <- lm(B ~ A, data = DF)R2Val<-signif(summary(mod)$r.squared[1], 2)

The parts of the expression wrapped in .() get evaluated in the environment, i.e. the value of R2Val is substituted.

plot(B ~ A, data = DF)text(1.5, 2, labels = bquote(R^2 == .(R2Val)), adj = 0, cex = 0.85)

Another potential solution is substitute, which works similarly:

plot(B ~ A, data = DF)text(1.5, 2, labels = substitute(R^2 == A, list(A = R2Val)), adj = 0, cex = 0.85)


To combine substitute() and paste(), I use the following code;

waic <-1;chisquare <-2;plot(x=1:2,y=1:2,      main =  substitute(paste(    "chi^2 goodness of fit ",        chi^2*(D/theta) , "=",  chisquare ,       ".  WAIC =",waic),list(chisquare=chisquare,waic=waic)  ))

The result is the following;

enter image description here


I've managed to put it together using the substitute function.

R2Val <- signif(summary(sMod_pre90)$r.squared[1], 2)text(92, 4, substitute(R^2 ~ "=" ~ R2Val), adj = 0, cex = 0.85)

All is good.