3

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

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

最好的,塔尔

4

2 回答 2

5

我会尝试将参数传递fileEncoding给 read.table,其值为iso8859-8.

用于iconvlist()获取支持的编码的字母列表。正如我在这里看到的,希伯来语必须是 ISO 8859 的第 8 部分。

于 2010-03-18T16:14:15.810 回答
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
于 2014-02-09T11:16:47.013 回答