I am trying to put an R2 value with R2 formatted with a superscript 2 followed by "=" and the value : the first mtext prints the R2 correctly formatted but follows it with "=round(summary(mylm)$r.squared,3)))" as text the second prints "R^2 =" followed by the value of round(summary(mylm)$r.squared,3))). how do I correctly write the expression to get formatted r2 followed by the value? x=runif(10) y=runif(10) summary(mylm<-lm(y~x)) plot(x,y) abline(mylm) mtext(expression(paste(R^2,"=",round(summary(mylm)$r.squared,3))),1) mtext(paste(expression(R^2),"=",round(summary(mylm)$r.squared,3)),3) thanks Nevil Amos
Joshua Wiley
2011-Oct-03 05:39 UTC
[R] How to format R superscript 2 followed by "=" value
Hi Nevil, Here is one option: ################################ ## function definition r2format <- function(object, digits = 3, output, sub, expression = TRUE, ...) { if (inherits(object, "lm")) { x <- summary(object) } else if (inherits(object, "summary.lm")) { x <- object } else stop("object is an unmanageable class") out <- format(x$r.squared, digits = digits) if (!missing(output)) { output <- gsub(sub, out, output) } else { output <- out } if (expression) { output <- parse(text = output) } return(output) } ## model m <- lm(mpg ~ hp * wt, data = mtcars) ## demonstration r2format(object = m, output = "R^2 == rval", sub = "rval", expression = TRUE) ## your problem x <- runif(10) y <- runif(10) mylm <- lm(y ~ x) plot(x, y) abline(mylm) ## simplified version of demo mtext(r2format(m, 3, "R^2 == rval", "rval"), 3) ################################ The real key is using == instead of "=". The lengthy response is because I have been toying with and working with different stylers and formatters to try to facilitate getting output from R into publication format so I was interested in playing with this and thinking what might be useful abstractions. Anyway, more specific to your useage might be something like: substitute(expression(R^2 == rval), list(rval round(summary(mylm)$r.squared,3))) Cheers, Josh On Sun, Oct 2, 2011 at 9:49 PM, Nevil Amos <nevil.amos at gmail.com> wrote:> I am trying to put ?an > R2 value with R2 formatted with a superscript 2 followed by "=" and the > value : > the first mtext prints the R2 correctly formatted but follows it with > "=round(summary(mylm)$r.squared,3)))" as text > the second prints "R^2 =" followed by the value of > round(summary(mylm)$r.squared,3))). > > how do I correctly write the expression to get formatted r2 followed by the > value? > > > > > x=runif(10) > y=runif(10) > summary(mylm<-lm(y~x)) > plot(x,y) > abline(mylm) > mtext(expression(paste(R^2,"=",round(summary(mylm)$r.squared,3))),1) > mtext(paste(expression(R^2),"=",round(summary(mylm)$r.squared,3)),3) > > > > thanks > > Nevil Amos > > ______________________________________________ > R-help at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. >-- Joshua Wiley Ph.D. Student, Health Psychology Programmer Analyst II, ATS Statistical Consulting Group University of California, Los Angeles https://joshuawiley.com/