2010-12-12 8 views
24

Próbuję umieścić wyniki regresji (np. R2) na wykresie, ale nie mogę wymyślić jak wywołać zmienną z wyrażenia (to wkleja nazwa zmiennej).Użyj zmiennej w wyrażeniu plotowania

Oto mój kod.

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

Odpowiedz

26

Użyj bquote(). Oto przykład z danych fikcyjnych:

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) 

Elementy ekspresji owiniętego .() ocenia się w środowisku, to znaczy wartość R2Val jest podstawiona.

plot(B ~ A, data = DF) 
text(1.5, 2, labels = bquote(R^2 == .(R2Val)), adj = 0, cex = 0.85) 

Innym potencjalnym rozwiązaniem jest substitute, który działa podobnie:

plot(B ~ A, data = DF) 
text(1.5, 2, labels = substitute(R^2 == A, list(A = R2Val)), adj = 0, cex = 0.85) 
0

Udało mi się to połączyć za pomocą funkcji zastępczej.

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

Wszystko jest dobre.

+0

To nie działa. Brakuje argumentu, aby powiedzieć 'substitute', które zmienne należy zastąpić. Zobacz moją odpowiedź. –

+0

Udało mi się wkleić tekst na wykresie za pomocą powyższego rozwiązania; wydaje się zastępować wywołania zmiennych, jednocześnie oceniając matematykę fabuły tak, jak powinna. Nie wiem, dlaczego to nie zadziałało. – sinclairjesse

+0

Sprawdziłem to na 2 komputerach z łatkami R2.11 i R2.12 na Linuksie, a twoja odpowiedź na nie nie działa. "R2Val" jest drukowane dosłownie, a nie interpretowane, na wykresie. Myślę, że '? Zamiennik' jest całkiem jasne, że jeśli nie podasz czegoś dla podstawienia argumentu 'env' nie będzie miało miejsca w tym przykładzie. –

Powiązane problemy