2012-12-28 8 views
7

Próbuję uzyskać etykietę zawierającą wykładnik. Oto kod mamUżywanie wyrażenia w drukowanym tekście - Drukowanie wartości zmiennej zamiast jej nazwy

vall = format(cor(x,y)*cor(x,y),digits=3) 
eq <- expression(paste(R^2," = ",vall,sep="")) 
text(legend.x,legend.y,eq,cex=1,font=2) 

Ale tekst po prostu wygląda to enter image description here

Jak mogę uzyskać rzeczywiste Vall, aby pokazać się (a nie tekst „Vall”)

+1

duplikat? http://stackoverflow.com/questions/4973898/combining-paste-and-expression-functions-in-plot-labels –

+1

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. –

+0

'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. –

Odpowiedz

13

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.

+0

dokładne wyjaśnienie +1 –

+0

to również nie działa: wyrażenie (R^2 == vall) – CodeGuy

+0

jednak bquote działało świetnie. dzięki – CodeGuy

Powiązane problemy