2017-05-04 8 views
0

'str'이라는 문자열이 있는데, RDS 파일을로드하지 못했습니다.ngram 패키지의 텍스트 인코딩 문제

이 문자열에는 R 스튜디오 콘솔에 잘 표시되는 프랑스어 액센트가 포함되어 있습니다. 그러나이 문자열에서 ngram 패키지를 사용하면 악센트 부호가있는 문자가 올바르게 표시되지 않습니다.

악센트 부호가있는 문자열을 R에 직접 정의하면 제대로 작동합니다 (아래 코드의 'str2'참조).

어떻게 해결할 수 있습니까? 예를 들어 원래 문자열에 새 인코딩을 강제로 적용 할 수 있습니다.

str # console displays "crédit hypothécaire en juillet" 
ng <- ngram(str, n = 2,sep= " ") 
get.phrasetable(ng) 
# ngrams freq  prop 
# 1  hypothécaire en  1 0.3333333 
# 2 crédit hypothécaire  1 0.3333333 
# 3   en juillet  1 0.3333333 
str2 <- "crédit hypothécaire en juillet" 
ng2 <- ngram(str2, n = 2,sep= " ") 
get.phrasetable(ng2) 
# ngrams freq  prop 
# 1  hypothécaire en  1 0.3333333 
# 2 crédit hypothécaire  1 0.3333333 
# 3   en juillet  1 0.3333333 

편집 :

하기 권장 링크 (handling special characters e.g. accents in R)은 중복 문제가 아닙니다, 그래서 검증 된 답변을 내 문제에 대한 해결책을 제공하지 않았다, 그러나, 몇 가지 단서를 제공

아래에 답을 보았는가
+1

먼저 생각, STR를 사용하지 마십시오. –

+1

가능한 [특수 문자 처리 예 : 액센트가 R] (http://stackoverflow.com/questions/9511281/handling-special-characters-eg-accents-in-r) –

+0

@ErikSchutte 그것은 ngram 패키지의 모든 예제에서 사용되었으므로 일관성을 유지했습니다.) –

답변

0

질문의 코멘트에서 @ErikSchutte의 링크를 따라 내가 필요한 것을 발견했습니다. 검증 된 응답이 나를 위해 작동하지 않았으므로 중복되지는 않습니다.

나는 효과가있는 것을 게시 하겠지만 왜 그렇게되는지 이해할 수 없으므로 내 자신의 답을 검증하지 않을 것이다.

그들이 나를 위해 일한의
Encoding(str) <- "UTF-8" 
Encoding(str) <- "LATIN1" 
str <- iconv(str, from="UTF-8", to="LATIN1") 
str <- iconv(str, from="LATIN1", to="UTF-8") 
enc2utf8(as(str, "character")) 

하나 (단 하나)이 하나 :

str <- iconv(str, from="UTF-8", to="LATIN1") 

편집 :

이 나는 ​​다음과 같은 아이디어를 찾아 'handling special characters e.g. accents in R'에서

문자열은 인코딩 된 문자열이 올바르지 않은 경우 잘 작동하지만 올바르게 인코딩 된 경우 NA로 변경됩니다. 여기에 문제를 해결하기 위해 내 unsexy 솔루션입니다 : 그것은 무슨 뜻인지에 대한 내부 R. 참조 함수`str` 같이

str_arr # a string or array of strings 
encode_to_latin1 <- function(str_arr){ 
    str_arr_converted <- iconv(str_arr, from="UTF-8", to="LATIN1") 
    nas <- is.na(str_arr_converted) 
    str_arr_converted[nas] <- str_arr[nas] 
    return(str_arr_converted) 
} 
str_arr <- encode_to_latin1(str_arr) 
+0

이미 잘 인코딩 된 문자열에 적용하면 NA를 반환합니다 ... –