2016-07-30 84 views
0

我使用R和stringr拼寫。當執行str_trim,str_upper等我的丹麥字符被轉換成Unicode charaters:stringr ::函數刪除或忽略語言環境

library(stringr) 
library(stringi) 

Clean_String <- function(string) { 
    #locale <- stri_locale_list()[grep("DK", stri_locale_list())] 
    print(c("1:", string)) 
    string <- stringr::str_trim(string) 
    print(c("2:", string)) 
    string <- stringr::str_to_upper(string, "da_DK") 
    print(c("3:", string)) 
    return(string) 
} 

Clean_String("This IS a test with danish letters: ÆØÅ .. ") 

調用Clean_String給出了下面的輸出:

[1] "1:" "This IS a test with danish letters: ÆØÅ .. " 
[1] "2:" "This IS a test with danish letters: ’\u009d\u008f .." 
[1] "3:" "THIS IS A TEST WITH DANISH LETTERS: ’\u009d\u008f .." 
[1] "THIS IS A TEST WITH DANISH LETTERS: ’\u009d\u008f .." 
> 

所以我從線路出現故障 「2」。應用語言環境「da_DK」不會產生影響。我認爲我必須錯過一些明顯的東西,因爲所有的stringr :: functions都具有相同的行爲。

我知道我可以使用toupper。 toupper保持語言環境。但我想使用stringr函數並理解我做錯了什麼。

如何在字符串上保留相同的語言環境/格式?

[更新] 似乎問題已連接到R Tools for Visual Studio 0.4.20623.1711。我需要在R工具 - >選項 - >高級 - >代碼頁下指定「代碼頁」。它被設置爲(OS默認)。將其更改爲西歐(ISO)將其修正。

+0

由於我得到所有''這是不可重現的我的區域'這是一個丹麥字母測試:ÆØÅ..「; 「這是對丹麥語字母的測試:ÆØÅ..」 [1]「這是對丹麥語字母的測試:ÆØÅ..」'我的語言環境設置爲locale: [1] LC_COLLATE = English_United States.1252 [ 2] LC_CTYPE = English_United States.1252 [3] LC_MONETARY = English_United States.1252 [4] LC_NUMERIC = C [5] LC_TIME = English_United States.1252' – akrun

+0

我得到了與@akrun相同的結果。我的區域設置是:區域設置: [1] LC_COLLATE = Dutch_Netherlands.1252 LC_CTYPE = Dutch_Netherlands.1252 LC_MONETARY = Dutch_Netherlands.1252 LC_NUMERIC = C [5] LC_TIME = Dutch_Netherlands.1252 – phiver

+0

請將解決方案作爲回答來完成問題。 –

回答

0

此問題已連接到適用於Visual Studio的R Tools 0.4.20623.1711

有必要下佈線工具指定 「代碼頁」 - >選項 - >高級 - >代碼頁

它被設置爲(OS Default)。將其更改爲Western European (ISO)修復了它。