2010-12-12 110 views
24

我试图将回归结果(即R2)置于图中,但似乎无法弄清楚如何从表达式内调用变量(它将粘贴变量名称)。在plotmath表达式中使用变量

这是我的代码。

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

回答

26

使用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) 
0

我已经设法使用替代函数将它放在一起。

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

一切都很好。

+0

这是行不通的。你错过了一个参数来告诉'替代'替代哪些变量。看到我的答案。 – 2010-12-12 18:30:32

+0

我设法用上面的解决方案将图中的文本粘贴到图中;它似乎可以替代变量调用,同时评估剧情数学,因为它应该。我不知道为什么它不适合你。 – sinclairjesse 2010-12-12 18:44:28

+0

那么,我已经在2台机器上检查了这个问题,在Linux上安装了R2.11修补程序和R2.12修补程序,并且您的答案也无法工作。 “R2Val”是字面打印,而不是被解释,在剧情上。我认为'?substitute'很清楚,除非你提供了'env'参数替换不会发生在这个例子中。 – 2010-12-13 13:34:40