Spróbuj bquote()
na przykład:
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)
powodem Twój przykład nie działa jest to, że R nie kończy się oceny vall
:
> eq2 <- expression(paste(R^2," = ",vall,sep=""))
> eq2
expression(paste(R^2, " = ", vall, sep = ""))
plotmath próbuje zrobić coś z tym, ale zasadniczo vall
jest brane dosłownie.
Generalnie nie potrzebujesz paste()
w wyrażeniu plotmath, możesz budować wyrażenie za pomocą standardowych operatorów i za pomocą operatorów layoutu. Na przykład, dla wyrażenia równoważne jednej swoim przykładzie wyprodukowanych (unevaluated vall
), wszystko, czego naprawdę potrzebujesz to:
expression(R^2 == vall)
bquote()
jest jeden sposób, aby obiekt zastąpione przez wartości w wyrażeniu. Owiń obiekt, który chcesz zastąpić jego wartością w .()
. R następnie poszuka obiektu i przyjmie jego wartość i wstawi go do wyrażenia.
Patrz także substitute()
, aby uzyskać alternatywne podejście do tego z innym interfejsem.
duplikat? http://stackoverflow.com/questions/4973898/combining-paste-and-expression-functions-in-plot-labels –
Nie sądzę, że jest to duplikat, ale tytuł tego postu jest nieco mylący. Czy mogę zaproponować ponowne sformułowanie tytułu, aby odzwierciedlić problem, ponieważ eksponent naprawdę nie wydaje się być twoim problemem. –
'sep =" "' nic tu nie robi (dodaje pusty ciąg znaków). To nie jest 'base :: paste', lecz' plotmath'. Nie zaszkodzi tutaj, ale nie zrobi tego, co chcesz, jeśli określony zostanie niepusty łańcuch. –