Search code examples
rplotmath

Use a variable within a plotmath expression


I'm trying to place the results of a regression (i.e., R2) in a graph, but can't seem to figure out how to call a variable from within an expression (it pastes the variable name).

Here is my code.

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

Solution

  • 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)