2016-07-30 7 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 ::関数が同じ振る舞いを持っているので、何かを見逃しているはずです。

私はtoupperを使用することができます。 toupperはロケールを保持します。しかし、私はstringr関数を使用して、私が間違っていることを理解したいと思います。

文字列に同じロケール/書式を保持するにはどうすればよいですか?

[UPDATE] この問題は、Visual Studio用Rツール0.4.20623.1711に接続されているようです。 R Tools-> Options-> Advanced-> Code Pageの下にある "Code page"を指定する必要がありました。これは(OSのデフォルト)に設定されています。それを西ヨーロッパ(ISO)に変更して修正しました。

+0

私のロケールでは再現できません。これはすべてデンマーク語の文字列「ÆØÅ..」でテストされています。 "これはデニッシュの文字でテストされています:ÅØÅ.." [1] "これはダニッシュ文字でテストされています:"ロケールとしての私のロケール設定: [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用ツール(0.4.20623.1711)。

Rツール下の "コード・ページ" を指定する必要がありました - >コードページ - >オプション - >高度

(OS Default)に設定しました。 Western European (ISO)に変更しました。

関連する問題