2010-03-18 54 views
3

我想讀一個.txt文件,希伯來語列名,但沒有成功。如何用「希伯來語」列名讀取(在R中)?

我上傳一個例子文件: 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" 

您能否提供給我什麼嘗試和改變讓我加載e文件是否正確?

更新: 嘗試使用:

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 

任何建議或澄清將不勝感激。

最佳, 塔爾

+1

你有沒有想過設置語言環境的方法?我遇到了同樣的問題,你需要將它設置爲使用'odfWeave' ... – Chase 2010-11-19 20:19:53

回答

5

我會嘗試通過參數fileEncodingiso8859-8值函數read.table來。

使用iconvlist()可獲取支持的編碼的字母列表。正如我所見here希伯來語必須是ISO 8859的第8部分。

+1

該文件在UTF-8中也適合我,所以這也是一個選項。 R中的文件編碼對我來說一直是試錯。 My Sys.getlocale(): [1]「en_US.UTF-8/en_US.UTF-8/C/C/en_US.UTF-8/en_US.UTF-8」 – kmm 2010-03-18 16:21:15

+0

同樣在這裏,它的工作原理。我有Sys.getlocale()en_US.UTF-8 --- $ MBCS [1] TRUE --- $'UTF-8' [1] TRUE --- $'Latin-1' [1] FALSE – 2010-03-18 18:18:13

+0

親愛的gd047凱文和索龍。我嘗試了gd047解決方案並更改爲您的配置,但失敗了。我更新了主要問題以反映這一點。任何建議將是最受歡迎的。謝謝! – 2010-03-18 19:02:00

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) 

比你可以使用CON變量作爲文件輸入其加載到你的代碼R,這裏描述代碼:

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 
+0

@ George-Dontas方法究竟做了什麼不工作?請發佈錯誤消息和平臺信息。 – smci 2014-03-27 13:49:13

+0

@smci這是一個wgile以前,我真的不記得錯誤消息。不過,我設法使它與上述過程一起工作。我會確保提供錯誤消息。下次。 – dof1985 2014-03-27 15:54:37

+0

沒有probs。 R中的這種平臺支持與其他任何產品一樣脆弱,並且錯誤消息質量很差。提高一些錯誤並使該死的事情更加健壯是一件好事。 – smci 2014-03-27 16:19:33