如何阅读。带有“希伯来语”列名(在R中)?

时间:2010-03-18 15:32:02

标签: r utf-8 hebrew

我正在尝试使用希伯来语列名读取.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

任何建议或澄清将不胜感激。

最佳, 塔尔

2 个答案:

答案 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