2012-11-24 60 views
1

我在Win 7 x64上使用R版本2.15.2(2012-10-26)和RStudio版本0.97.168,並使用語言環境English_United Kingdom.1252。R重音字符

我想用'gsub'替換'christiangrgić'爲'christian grgi [ćc]'(後一個字符串稍後將用作正則表達式來查找名稱的重音和非重音版本)。

但是,R似乎沒有認出作爲重音c的c。此代碼

name <- "christian grgić" 
gsub("ć","[cć]",name) 

給出了這樣的輸出

[1] "[cc]hristian grgi[cc]" 

,而不是我想要的東西:

[1] "christian grgi[cć]" 

任何幫助深表感謝。

+2

'Encoding'可能是一個起點。 –

+0

看到這個問題的正則表達式與國際文本提示:http://stackoverflow.com/questions/11369668/how-to-match-all-internationalized-text –

+0

謝謝,但編碼是超出我目前的理解。我的系統默認編碼似乎是ISO8859-1(我從localeToCharset得到的)。如果我用這種編碼保存腳本,下次打開它時,重音c就會丟失。所以我用UTF-8編碼保存(RStudio提供這個選項),然後再次用UTF-8編碼重新打開。然後,然而,如果我運行'name < - 「christiangrgić」',然後'編碼(名稱)'我得到「未知」,我不能設置任何編碼的字符串。 – cin

回答

3

試試這個:

Encoding(name) <- "UTF-8" 
gsub("ć","[cć]",name) 
#[1] "christian grgi[cć]" 

注意這是從sessionInfo(的信息,我得到了當地):

> locale: [1] 
> en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8 
+0

此解決方案取決於本地會話信息? – agstudy

+0

謝謝,正如我剛纔在上面添加的,代碼的第一行不適用於我。我從sessionInfo()得到的是'locale: [1] LC_COLLATE = English_United Kingdom.1252' – cin

+0

短語「不起作用」承認許多可能的解釋。 –