Co najmniej w niektórych przypadkach można drukować znaki azjatyckie, jeśli są one zawarte w matrix
lub vector
, ale nie w data.frame
. Oto przykładDlaczego niektóre znaki Unicode są wyświetlane w macierzach, ale nie w ramkach danych w R?
q<-'天'
q # Works
# [1] "天"
matrix(q) # Works
# [,1]
# [1,] "天"
q2<-data.frame(q,stringsAsFactors=FALSE)
q2 # Does not work
# q
# 1 <U+5929>
q2[1,] # Works again.
# [1] "天"
Oczywiście, moje urządzenie jest zdolne do wyświetlania znaków, ale gdy jest w data.frame
, to nie działa.
Wykonując pewne kopanie, stwierdziłem, że funkcja print.data.frame
działa format
w każdej kolumnie. Okazuje się, że po uruchomieniu format.default
bezpośrednio, ten sam problem występuje:
format(q)
# "<U+5929>"
wbijały format.default
, uważam, że jest wywołanie wewnętrznej format
, napisany w C.
Przed kopać dalej, Chcę wiedzieć, czy inni mogą odtworzyć to zachowanie. Czy jest jakaś konfiguracja R, która pozwoli mi wyświetlić te znaki w ciągu data.frame
s?
My sessionInfo()
, czy to pomaga:
R version 3.0.1 (2013-05-16)
Platform: x86_64-w64-mingw32/x64 (64-bit)
locale:
[1] LC_COLLATE=English_Canada.1252 LC_CTYPE=English_Canada.1252
[3] LC_MONETARY=English_Canada.1252 LC_NUMERIC=C
[5] LC_TIME=English_Canada.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
loaded via a namespace (and not attached):
[1] tools_3.0.1
Spróbuj ustawić "Sys.setlocale (locale =" UTF-8 ")'. To trochę dziwne, że renderowanie jest niespójne; jednak "English_Canada.1252" nie jest w żaden sposób przeznaczony do obsługi znaków azjatyckich. –