我正在尝试使用希伯来语列名读取.txt文件,但没有成功。
我上传了一个示例文件到: http://www.talgalili.com/files/aa.txt
我正在尝试命令:
read.table("http://www.talgalili.com/files/aa.txt", header = T, sep = "\t")
这让我回复:
X.....ª X...ª...... X...œ....
1 12 97 6
2 123 354 44
3 6 1 3
而不是:
אחת שתיים שלוש
12 97 6
123 354 44
6 1 3
我的输出:
l10n_info()
时:
$MBCS
[1] FALSE
$`UTF-8`
[1] FALSE
$`Latin-1`
[1] TRUE
$codepage
[1] 1252
并且:
Sys.getlocale()
时:
[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"
您可以向我建议尝试更改以允许我正确加载文件吗?
更新 试图使用:
read.table("http://www.talgalili.com/files/aa.txt",fileEncoding ="iso8859-8")
导致:
V1
1 ?
Warning messages:
1: In read.table("http://www.talgalili.com/files/aa.txt", fileEncoding = "iso8859-8") :
invalid input found on input connection 'http://www.talgalili.com/files/aa.txt'
2: In read.table("http://www.talgalili.com/files/aa.txt", fileEncoding = "iso8859-8") :
incomplete final line found by readTableHeader on 'http://www.talgalili.com/files/aa.txt'
同时也尝试这个:
Sys.setlocale("LC_ALL", "en_US.UTF-8")
或者这个:
Sys.setlocale("LC_ALL", "en_US.UTF-8/en_US.UTF-8/C/C/en_US.UTF-8/en_US.UTF-8")
得到我这个:
[1] ""
Warning message:
In Sys.setlocale("LC_ALL", "en_US.UTF-8") :
OS reports request to set locale to "en_US.UTF-8" cannot be honored
最后,这是> sessionInfo()
R version 2.10.1 (2009-12-14)
i386-pc-mingw32
locale:
[1] LC_COLLATE=English_United States.1255 LC_CTYPE=English_United States.1252 LC_MONETARY=English_United States.1252 LC_NUMERIC=C
[5] LC_TIME=English_United States.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
loaded via a namespace (and not attached):
[1] tools_2.10.1
任何建议或澄清将不胜感激。
最佳, 塔尔
答案 0 :(得分:5)
我会尝试将参数fileEncoding
传递给read.table,其值为iso8859-8
。
使用iconvlist()
获取支持的编码的字母顺序列表。正如我所见here希伯来语必须是ISO 8859的第8部分。
答案 1 :(得分:0)
我已经尝试过@George Donats的答案,但无法使其发挥作用。所以我想提出另一种可能性供将来参考。
我无法在线找到该文件,因此我重新创建了一个txt文件,就像您使用TAB作为分隔符一样。您可以使用连接将希伯来文本加载到R中。它在下面说明:
con<-file("aa.txt",open="r",encoding="iso8859-8") ##Open a read-only connection with encoding fit for Hebrew (iso8859-8)
您可以使用您的代码将其加载到R中,使用con变量作为文件输入,此处描述的代码:
data<-read.table(con,sep="\t",header=TRUE)
浏览数据变量会得到以下结果:
str(data)
'data.frame': 3 obs. of 3 variables:
$ אחת : int 6 44 3
$ שתיים: int 97 354 1
$ שלוש : int 12 123 6
> data$אחת
[1] 6 44 3