Использовать переменную в выражении plotmath
Я пытаюсь поместить результаты регрессии (т.е. R2) в график, но не могу понять, как вызвать переменную из выражения (она вставляет имя переменной).
Вот мой код.
R2Val <- signif(summary(sMod_pre90)$r.squared[1], 2)
text(92, 4, expression(paste(R^2, " = ", R2Val)), adj = 0, cex = 0.85)
Ответы
Ответ 1
Используйте 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)
Ответ 2
Мне удалось собрать его, используя заменяющую функцию.
R2Val<-signif(summary(sMod_pre90)$r.squared[1],2)
text(92,4,substitute(R^2~"="~R2Val),adj=0,cex=0.85)
Все хорошо.
Ответ 3
Для объединения 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]()