Используйте переменную в выражении plotmath - PullRequest
27 голосов
/ 12 декабря 2010

Я пытаюсь поместить результаты регрессии (т. Е. R2) в график, но не могу понять, как вызвать переменную из выражения (она вставляет имя переменной).

Вот мой код.

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

Ответы [ 3 ]

29 голосов
/ 12 декабря 2010

Используйте 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 голосов
/ 22 июня 2019

Для объединения substitute() и paste() я использую следующий код:

waic <-1;
chisquare <-2;
plot(x=1:2,y=1:2, 
     main =  substitute(paste(
    "chi^2 goodness of fit ", 
       chi^2*(D/theta) , "=",  chisquare ,
       ".  WAIC =",waic),


list(chisquare=chisquare,waic=waic)  
)
)

Результат следующий;

enter image description here

0 голосов
/ 12 декабря 2010

Мне удалось собрать его, используя функцию замены.

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

Все хорошо.

...