Prova bquote()
, per esempio:
set.seed(1)
vall <- format(rnorm(1),digits=3)
eq <- bquote(bold(R^2 == .(vall)))
sq <- seq(0, 1, by = 0.1)
plot(sq, sq, type = "n")
text(0.5, 0.5, eq)
Il motivo per il tuo esempio non funziona è che R non finisce per valutare vall
:
> eq2 <- expression(paste(R^2," = ",vall,sep=""))
> eq2
expression(paste(R^2, " = ", vall, sep = ""))
plotmath cerca di fare qualcosa di questo, ma essenzialmente vall
viene preso alla lettera.
In generale non è necessario paste()
in un'espressione plotmath, è possibile creare l'espressione utilizzando operatori standard e tramite l'utilizzo di operatori di layout. Ad esempio, per un'espressione equivalente a quella prodotta vostro esempio (non valutata vall
), tutti si ha realmente bisogno è:
expression(R^2 == vall)
bquote()
è un modo per avere un oggetto sostituito dal suo valore in un'espressione. Si sposta l'oggetto che si desidera sostituito dal suo valore in .()
. R cercherà quindi l'oggetto e ne prenderà il valore e lo inserirà nell'espressione.
Vedere anche substitute()
per un approccio alternativo a questa con un'interfaccia diversa.
fonte
2012-12-28 18:54:33
duplicato? http://stackoverflow.com/questions/4973898/combining-paste-and-expression-functions-in-plot-labels –
Non penso che questo sia un duplicato ma il titolo di questo post è un po 'fuorviante. Posso suggerire di riformattare il titolo per riflettere il problema in quanto l'esponente in realtà non sembra essere il tuo problema. –
'sep =" "' non fa nulla qui (aggiunge una stringa vuota). Questo non è 'base :: pasta' ma piuttosto' plotmath'. Non farà male qui, ma non farà quello che vuoi se viene specificata una stringa non vuota. –