2010-12-12 13 views
24

Ich versuche, die Ergebnisse einer Regression (dh R2) in einem Diagramm zu platzieren, aber nicht herausfinden, wie eine Variable innerhalb eines Ausdrucks aufgerufen wird (es klebt der Variablenname).Verwenden Sie eine Variable in einem Plotmath-Ausdruck

Hier ist mein Code.

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

Antwort

26

Verwenden Sie bquote(). Hier ist ein Beispiel mit Dummy-Daten:

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) 

Die Teile des Ausdrucks gewickelt in .() in der Umwelt ausgewertet erhalten, das heißt der Wert von R2Val substituiert ist.

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

Eine andere mögliche Lösung ist substitute, die ähnlich funktioniert:

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

Ich habe es geschafft, es mit der Ersatzfunktion zusammenzusetzen.

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

ist alles gut.

+0

Das funktioniert nicht. Sie vermissen ein Argument, um zu sagen, welche Variablen ersetzt werden sollen. Siehe meine Antwort. –

+0

Ich habe es geschafft, den Text im Diagramm mit der obigen Lösung einzufügen; Es scheint, Variablenaufrufe zu ersetzen, während das Plot Mathe wie es sollte zu bewerten. Ich bin mir nicht sicher, warum es für dich nicht funktioniert hat. – sinclairjesse

+0

Nun, ich habe dies auf zwei Rechnern mit R2.11-gepatcht und R2.12-gepatcht unter Linux überprüft und Ihre Antwort funktioniert auch nicht. Das "R2Val" wird wörtlich gedruckt, anstatt auf der Handlung interpretiert zu werden. Ich denke '' substitute' 'ist ziemlich klar, dass, wenn Sie nicht etwas für das 'env'-Argument angeben, die Substitution in diesem Beispiel nicht stattfinden wird. –

Verwandte Themen