2010-12-12 8 views
24

J'essaie de placer les résultats d'une régression (ie, R2) dans un graphique, mais je n'arrive pas à comprendre comment appeler une variable depuis une expression (elle colle le nom de la variable).Utiliser une variable dans une expression plotmath

Voici mon code.

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

Répondre

26

Utilisez bquote(). Voici un exemple de données fictives:

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) 

Les parties de l'expression enveloppé dans .() s'évaluées dans l'environnement, à savoir la valeur de R2Val est substitué.

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

Une autre solution potentielle est substitute, qui fonctionne de la même:

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

J'ai réussi à le mettre en place en utilisant la fonction de remplacement.

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

Tout est bon.

+0

qui ne fonctionne pas. Il vous manque un argument pour dire 'substituer' quelles variables substituer. Vois ma réponse. –

+0

J'ai réussi à coller le texte dans le graphique avec la solution ci-dessus; il semble substituer les appels variables, tout en évaluant les mathématiques de l'intrigue comme il se doit. Je ne sais pas pourquoi ça n'a pas marché pour vous. – sinclairjesse

+0

Eh bien, j'ai vérifié ceci sur 2 machines avec à la fois R2.11-patched et R2.12-patched sous Linux et votre réponse ne fonctionne pas non plus. Le 'R2Val' est imprimé littéralement, plutôt qu'être interprété, sur l'intrigue. Je pense que "? Substitute" est assez clair que si vous ne fournissez pas quelque chose pour l'argument 'env', la substitution n'aura pas lieu dans cet exemple. –

Questions connexes