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
How to format R superscript 2 followed by "=" value
2 messages · Nevil Amos, Joshua Wiley
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/