2015-03-19 22 views
7

Chcę dodać znak Unicode, który ma dwie litery jako indeksy dolne do legendy działki w R. Znak jest r z akcentem breve (ř), a dwie litery to i i j.Znak Unicode z indeksem dolnym

Już obejrzałem to pytanie: Unicode character with superscript i próbowałem dostosować odpowiedzi do mojego problemu.

Oto, co starałem:

plot(1,pch=NA,ylab="",xlab="",axes=F) 
legend("top",legend=paste("1-","\u{0159}"),bty ="n",bg = "white",cex=2) 
legend("center",legend=paste("1-","\u{0159}","\u{0069}","\u{006A}"),bty="n",bg = "white",cex=2) 
legend("bottomleft",legend=expression("1-"*"\u0159"["\u0069"*"\u006A"]),bty="n",bg = "white",cex=2) 
legend("bottomright", legend = quote("1-" *"\u0159"["\u0069"*"\u006A"]),bty="n",bg = "white",cex=2) 

Powstały działce można znaleźć poniżej

enter image description here

zarówno literę Unicode oraz indeksie działać prawidłowo przez siebie, ale nie razem. paste() z dowolną kombinacją [] zwraca błąd, ale myślę, że należy się tego spodziewać, ponieważ pasta nie może obsłużyć [] dla indeksu dolnego.

Na stronie FAQ na CRAN może dać wskazówkę, jak używam systemu Windows, ale nie jestem pewien, jak zaimplementować to:

3,6 Nie widzę znaki z akcentami w konsoli R, na przykład w tekście.

Musisz określić czcionkę w Rconsole (patrz Q5.2), która obsługuje kodowanie w użyciu. Wcześniej był to problem we wcześniejszych wersjach systemu Windows, ale teraz trudno jest znaleźć czcionkę, która go nie posiada.

Obsługa tych znaków w Rterm zależy od środowiska (okna terminala i powłoki, w tym ustawień ustawień regionalnych i strony kodowej), w których jest uruchamiany, a także czcionek używanych przez okno terminala. Te są zwykle w starszych ustawieniach DOS i muszą zostać zmienione.

+1

pomocą umieszczonego na odpowiedź ty, to działa na mnie 'plot.new() ; text (0.5, 0.7, labels = quote ("1 -" * '\ u {0159}' [ij])) '. 3 i 4 w twoim przykładzie też działają dla mnie – rawr

+0

@rawr Niestety, twoje rozwiązanie nie działało dla mnie. Używam RStudio, więc próbowałem go również używając zwykłego R, ale też tam nie działała żadna z wersji. –

+0

Nadja, z jakiego systemu operacyjnego korzystasz, jako dwa ostatnie przykłady i kod rawra, oba są renderowane zgodnie z oczekiwaniami na Ubuntu 14.04, Rv3.1.3 – user20650

Odpowiedz

3

Ma to związek z ustawieniami regionalnymi systemu, np. jeśli spróbujesz

# intToUtf8(345) 
# [1] "ř" 
# iconv(intToUtf8(345), "utf-8", localeToCharset()) 
# [1] "r" 

To powinno go naprawić (użyłem czesku ale innych lokalizacjach prawdopodobnie będzie działać zbyt):

Sys.setlocale("LC_CTYPE", "czech") 
# [1] "Czech_Czech Republic.1250" 
text(..., labels = quote("\u{0159}"[ij])) 
+0

Świetne rzeczy, okrzyki. Próbowałem ustawić lokalizację na niemiecki i francuski bez żadnej radości. ..czech jest odpowiedzią! – user20650

+0

@ user20650 Lol Tak, to pierwszy język, który przyszedł mi do głowy, że ma tę postać, chociaż jestem pewien, że będzie ich wiele. Czy wiesz jednak, dlaczego działa bez zmiany ustawień regionalnych, gdy nie ma żadnych indeksów dolnych, np. W 'quote (" \ u {0159} ")? – konvas

+0

Nie mam pojęcia, uważam to za dziwne.Więc być może prawdziwa odpowiedź brzmi: * nie używaj Windows * – user20650