我想了解这是否是RStudio中的错误,还是我错过了一些东西。
我正在将csv文件读入R。在RStudio中将其打印到控制台中时,我会感到杂乱(除非我查看特定的向量)。在Rgui中这很好。
我将运行的代码是这样的:
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)
这是RStudio的输出(不规则)
> 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] "âéì..áùðéí." "îéâãø"
>
这是在Rgui中(很好):
> 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] "גיל..בשנים." "מיגדר"
>
在这两个会话中,我的sessionInfo()是:
> 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
我正在使用最新的RStudio版本0.99.892
谢谢。
最佳答案
这是R-studio中的错误,而不是唯一的。我已经看到you have received关于R-studio当前在Windows上具有非英语语言环境支持的问题的一般答案。据我所知,这不是第一次/版本有类似的问题。您可能还会遇到一些我认为与获胜10相关的new problems。请注意,由于我也遇到第二种类型的问题,因此我使用英语语言环境来打印希伯来语。
因此,我已尝试对您的问题进行一些调试,并提供了一些解决方法,以及有关问题出在哪里的一些新见解(我认为..)。我认为可以编写一个完整的函数来对其进行调试,该函数将对其进行修复,但是由于时间(和小时)的限制,我决定在此处停止。
我创建了以下数据:
x <- data.frame("x"= c("דור","dor"))
如前所述,使用希伯来语语言环境我也会变得杂乱无章
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
使用英语语言环境,我得到此输出。
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
请注意,非
data.frame
输出可正常打印。它也出现在data.table
类中,并且在list
和matrix
下可以正常打印。同时检查
print.data.frame
和print.table
方法可发现主要的可疑对象:format
。进一步的调查证实了这些怀疑:
as.matrix(x)
x
[1,] "דור"
[2,] "dor"
format(as.matrix(x))
x
[1,] "<U+05D3><U+05D5><U+05E8>"
[2,] "dor "
因此,我建议您遵循以下工作流程:
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" "נקבה"
两种语言环境:希伯来语和英语都可以在我的计算机上使用,但是
col.names
都不适用。总而言之,这远非一个完整的解决方案,而只是解决打印(或召回格式化)问题的一个小而局部的解决方案。它还为R-studio中的希伯来语/非英语版本提供了更多信息,可以写一些更好的解决方案。 on this SO thread可以看到一个解决类似问题的示例,该示例在Windows中编写希伯来语。
关于r - 读取UTF-8文本文件(希伯来语)在RStudio控制台中显示乱码,在RGUI中显示文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35973507/