2016-07-30 1 views
0

저는 R 및 stringr로 stuggeling입니다.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 다음과 같은 출력을 제공합니다 : str_trim을 수행 할 때, str_upper 등 내 덴마크어 문자는 유니 코드 부르는 것들은로 변환

[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 함수를 사용하여 내가 뭘 잘못하고 있는지 알고 싶습니다.

문자열에 동일한 로캘/형식을 유지하려면 어떻게해야합니까?

[업데이트] Visual Studio 용 R 도구 0.4.20623.1711에 문제가있는 것 같습니다. R 도구 -> 옵션 -> 고급 -> 코드 페이지에서 "코드 페이지"를 지정해야했습니다. 이 값은 (OS 기본값)으로 설정되었습니다. 그것을 서유럽 (ISO)으로 바꾸면 해결됩니다.

+0

내 로케일로는 재현 할 수 없습니다. "이것은 덴마크 문자로 테스트 한 것입니다 : ÆØÅ .."; "이것은 영어로 된 테스트입니다 : ÆØÅ .." [1] "터키어로 테스트했습니다 : ÆØÅ .."'로켈 로케일 설정 : [1] LC_COLLATE = 영어 _ 미국 .1252 [ 2] LC_CTYPE = 영어 _ 미국 .1252 [3] LC_MONETARY = 영어 _ 미국 .1252 [4] LC_NUMERIC = C [5] LC_TIME = 영어 _ 미국 .1252' – akrun

+0

나는 @akrun과 같은 결과를 얻습니다. 로케일 : [1] LC_COLLATE = Dutch_Netherlands.1252 LC_CTYPE = 네덜란드 _ 네델란드 _1252 LC_MONETARY = 네델란드 _ 네델란드 _1252 LC_NUMERIC = C [5] LC_TIME = Dutch_Netherlands.1252 – phiver

+0

문제 해결을위한 해결책으로 해결책을 게시하십시오. –

답변

0

이 문제는 R Tools for Visual Studio 0.4.20623.1711에 연결되었습니다. >옵션 - ->고급 ->코드 페이지

R 도구에서 "코드 페이지"를 지정할 필요했다.

(OS Default)으로 설정되었다. Western European (ISO)으로 변경하여 해결했습니다.

관련 문제