2016-03-13 1 views
2

J'essaie de comprendre si c'est un bogue dans RStudio ou est-ce que je manque quelque chose. Je lis un fichier csv dans R. Lorsque je l'imprime dans la console dans RStudio, je deviens gibrish (à moins que je regarde un vecteur spécifique). Tandis qu'à Rgui c'est bien.Lire un fichier texte UTF-8 (en hébreu) ​​montre gibrish dans la console RStudio et bien dans RGUI

Le code que je vais courir est la suivante:

Sys.setlocale("LC_ALL", "Hebrew") 
x <- read.csv("https://raw.githubusercontent.com/talgalili/temp2/gh-pages/Hebrew_UTF8.txt", encoding="UTF-8") 
x # shows gibrish 
x[,2] 
colnames(x) 

est ici la sortie de rstudio (gibrish)

> x <- read.csv("https://raw.githubusercontent.com/talgalili/temp2/gh-pages/Hebrew_UTF8.txt", encoding="UTF-8") 
> x 
    âéì..áùðéí. îéâãø 
1   23.0 æëø 
2   24.0 ð÷áä 
3   23.0 ð÷áä 
4   24.0 ð÷áä 
5   25.0 æëø 
6   18.0 æëø 
7   26.0 æëø 
8   21.5 ð÷áä 
9   24.0 æëø 
10  26.0 æëø 
11  24.0 æëø 
12  19.0 ð÷áä 
13  19.0 ð÷áä 
14  24.5 æëø 
15  21.0 ð÷áä 
> x[,2] 
[1] זכר נקבה נקבה נקבה זכר זכר זכר נקבה זכר זכר זכר נקבה נקבה זכר נקבה 
Levels: זכר נקבה 
> colnames(x) 
[1] "âéì..áùðéí." "îéâãø"  
> 

Et ici, il est en Rgui (ici, il est très bien):

>  x <- read.csv("https://raw.githubusercontent.com/talgalili/temp2/gh-pages/Hebrew_UTF8.txt", encoding="UTF-8") 
>  x # shows gibrish 
    גיל..בשנים. מיגדר 
1   23.0 זכר 
2   24.0 נקבה 
3   23.0 נקבה 
4   24.0 נקבה 
5   25.0 זכר 
6   18.0 זכר 
7   26.0 זכר 
8   21.5 נקבה 
9   24.0 זכר 
10  26.0 זכר 
11  24.0 זכר 
12  19.0 נקבה 
13  19.0 נקבה 
14  24.5 זכר 
15  21.0 נקבה 
>  x[,2] 
[1] זכר נקבה נקבה נקבה זכר זכר זכר נקבה זכר זכר זכר נקבה נקבה זכר נקבה 
Levels: זכר נקבה 
>  colnames(x) 
[1] "גיל..בשנים." "מיגדר"  
> 

Dans les deux sessions, mon sessionInfo() est:

> sessionInfo() 
R version 3.2.3 (2015-12-10) 
Platform: x86_64-w64-mingw32/x64 (64-bit) 
Running under: Windows 7 x64 (build 7601) Service Pack 1 

locale: 
[1] LC_COLLATE=Hebrew_Israel.1255 LC_CTYPE=Hebrew_Israel.1255 
[3] LC_MONETARY=Hebrew_Israel.1255 LC_NUMERIC=C     
[5] LC_TIME=Hebrew_Israel.1255  

attached base packages: 
[1] stats  graphics grDevices datasets utils  methods base  

other attached packages: 
[1] installr_0.17.0 

J'utilise la dernière version rstudio 0.99.892

Merci.

+0

Avez-vous pu résoudre ce problème? J'ai exactement le même problème avec le japonais. – chengvt

Répondre

1

Ceci est un bug dans R-studio et pas le seul. J'ai vu you have received une réponse générale à propos des problèmes R-studio ayant actuellement avec le support des paramètres régionaux non anglais sur Windows. Pour autant que je sache, ce n'est pas la première fois/version ayant des problèmes similaires. Vous pouvez également rencontrer quelques new problems que je pense liés à gagner 10. Notez que puisque j'ai aussi le deuxième type de problèmes, j'utilise l'anglais local pour imprimer l'hébreu.

J'ai donc essayé un peu de débogage sur votre problème là-bas et est venu avec un peu de travail, et de nouvelles idées (je pense ..) sur où est le problème. Je pense qu'il peut être encore débogué pour écrire une fonction complète qui va le réparer, mais en raison des restrictions de temps (et d'heure), j'ai décidé d'arrêter ici.

J'ai créé ces données:

x <- data.frame("x"= c("דור","dor")) 

Comme déjà mentionné, en utilisant locale hébreu I ainsi obtenir gibrish

Sys.setlocale("LC_ALL", "Hebrew") 
[1] "LC_COLLATE=Hebrew_Israel.1255;LC_CTYPE=Hebrew_Israel.1255;LC_MONETARY=Hebrew_Israel.1255;LC_NUMERIC=C;LC_TIME=Hebrew_Israel.1255" 

"דור" 
[1] "ãåø" 

x 
    x 
1 ãåø 
2 dor 

aide locale anglais, j'ai obtenir cette sortie.

Sys.setlocale("LC_ALL", "English") 
[1] "LC_COLLATE=English_United States.1252;LC_CTYPE=English_United States.1252;LC_MONETARY=English_United States.1252;LC_NUMERIC=C;LC_TIME=English_United States.1252" 

"דור" 
[1] "דור" 

x 
         x 
1 <U+05D3><U+05D5><U+05E8> 
2      dor 

Notez que la sortie data.frame ne s'imprime pas correctement. Il se produit également avec la classe data.table et s'imprime avec list et matrix. La vérification des méthodes print.data.frame et print.table révèle le principal suspect: format.

Une enquête plus approfondie confirment ces soupçons:

as.matrix(x) 
    x  
[1,] "דור" 
[2,] "dor" 

format(as.matrix(x)) 
    x       
[1,] "<U+05D3><U+05D5><U+05E8>" 
[2,] "dor      " 

En tant que tel dans votre cas, je vous suggérons de suivre ce flux de travail:

Sys.setlocale("LC_ALL", "Hebrew") 
x <- read.csv("https://raw.githubusercontent.com/talgalili/temp2/gh-pages/Hebrew_UTF8.txt", encoding="UTF-8") 
as.matrix(x) 
     âéì..áùðéí. îéâãø 
[1,] "23.0"  "זכר" 
[2,] "24.0"  "נקבה" 
[3,] "23.0"  "נקבה" 
[4,] "24.0"  "נקבה" 
[5,] "25.0"  "זכר" 
[6,] "18.0"  "זכר" 
[7,] "26.0"  "זכר" 
[8,] "21.5"  "נקבה" 
[9,] "24.0"  "זכר" 
[10,] "26.0"  "זכר" 
[11,] "24.0"  "זכר" 
[12,] "19.0"  "נקבה" 
[13,] "19.0"  "נקבה" 
[14,] "24.5"  "זכר" 
[15,] "21.0"  "נקבה" 

deux lieux: l'hébreu et l'anglais ont travaillé sur ma machine, mais col.names n » ai pas t travailler pour ni l'un ni l'autre.Pour conclure, ceci est loin d'être une solution complète, mais juste un petit et partiel travail autour du problème d'impression (ou de rappel du formatage). Il apporte également un peu plus de lumière sur ce numéro hébreu/non-anglais dans R-studio, sur lequel de meilleures solutions peuvent être écrites. Un exemple d'une solution pour un problème similaire d'écriture hébraïque dans les fenêtres peut être vu on this SO thread.

+0

Merci dof. Avez-vous écrit ceci aux gens de RStudio? –

+0

Non ... c'était trop tard. – dof1985