我正在尝试在图表中放置回归结果(即R2),但似乎无法弄清如何从表达式中调用变量(它会粘贴变量名)。
这是我的代码。
R2Val <- signif(summary(sMod_pre90)$r.squared[1], 2)
text(92, 4, expression(paste(R^2, " = ", R2Val)), adj = 0, cex = 0.85)
使用bquote()
。这里有一个使用虚拟数据的示例:
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)
用 .()
包裹的表达式会在当前环境下求值,即会用变量 R2Val
的值代替。
plot(B ~ A, data = DF)
text(1.5, 2, labels = bquote(R^2 == .(R2Val)), adj = 0, cex = 0.85)
另一个潜在的解决方案是substitute
,其工作方式类似:
plot(B ~ A, data = DF)
text(1.5, 2, labels = substitute(R^2 == A, list(A = R2Val)), adj = 0, cex = 0.85)
我已经成功地使用替换函数把它拼凑起来了。
R2Val <- signif(summary(sMod_pre90)$r.squared[1], 2)
text(92, 4, substitute(R^2 ~ "=" ~ R2Val), adj = 0, cex = 0.85)
一切都很好。
R2Val
的输出是字面值,而不是在绘图中被解释的值。我认为?substitute
很清楚,除非您为env
参数提供某些内容,否则在此示例中不会进行替换。 - Gavin Simpson