2017-11-08 3 views
2

저는 해리포터 7 권을 사용하여 텍스트 마이닝 프로젝트를 진행하고 있습니다. 책의 텍스트가 들어있는 R 패키지가 있습니다. 이 패키지에서 각 책은 벡터이고 각 장은 벡터에 포함 된 문자열입니다.미확인 공백

필자의 분석을 위해 문자열을 준비하는 동안 필자는 식별 할 수없는 공백 문자를 계속 실행하고 제거 방법을 알아낼 수 없습니다. 이는 다음 코드에 의해 설명된다 :

require(devtools) 
devtools::install_github("bradleyboehmke/harrypotter") 
require(harrypotter) 

temp <- substr(philosophers_stone[1], 0, 31) 
temp 

temp <- gsub(" ", "", temp) 
temp 

temp <- gsub("[\t\n\r\v\f]", "", temp) 
temp 

다음 코드의 출력은 같이

temp <- substr(philosophers_stone[1], 0, 31) 
temp 
# [1] "THE BOY WHO LIVED  Mr. and Mrs." 
temp <- gsub(" ", "", temp) 
temp 
# [1] "THEBOYWHOLIVED  Mr.andMrs." 
temp <- gsub("[\t\n\r\v\f]", "", temp) 
temp 
# [1] "THEBOYWHOLIVED  Mr.andMrs." 
temp <- gsub("&nbsp;", "", temp) 
temp 
# [1] "THEBOYWHOLIVED  Mr.andMrs." 

이 사람이 나에게이 일이 무엇인지 알아낼 수 있습니다, 어떻게 내가 그것을 제거 할 수 있습니다 ?

+0

'sessionInfo()'를 추가 할 수 있습니까? 버그에 플랫폼 종속성 문제가있는 것으로 보입니다. – MichaelChirico

답변

1

이상한 - 공백을 정의하는 방법이 확실하지 않습니다. (온도

charToRaw :

require(devtools) 
devtools::install_github("bradleyboehmke/harrypotter") 
require(harrypotter) 

temp <- substr(philosophers_stone[1], 0, 31) 
x <- substr(temp, 18, 19) 
temp <- gsub(x, "", temp) 
temp <- gsub(" ", "", temp) 
+0

감사합니다. 좋은 생각이야. – Beane

+0

문제 없습니다. 도움이되기를 바랍니다! –

3

사용 charToRaw을 :하지만,이 같은 텍스트에 교체 다음 변수로 이상한 공백을 (당신이 제공되는 샘플 문자 18, 19)를 저장하고 시도해 볼 수도 있습니다)

# [1] 54 48 45 20 42 4f 59 20 57 48 4f 20 4c 49 56 45 44 e3 80 80 e3 80 80 4d 72 2e 20 61 6e 64 20 4d 
# [33] 72 73 2e 

여기의 각 요소는 문자 (기본적으로)에 해당합니다. 문제가있는 공백은 e3 80 80 (두 번 반복)이라고 추론 할 수 있습니다. 에 해당하는 here에 따르면, 균일 한 너비의 공간 (일반적으로 고정 폭 스크립트 (예 : 중국어 또는 일본어)에서 사용됨).

어쨌든

, 지금 우리는 rawToChargsub을 멀리와 그것을 다시 변환 할 수 있습니다

gsub(rawToChar(as.raw(c('0xe3', '0x80', '0x80'))), '', temp) 
# [1] "THE BOY WHO LIVEDMr. and Mrs." 

(당신은 또한 다른 모든 공백이라고 전했다하고 있기 때문에 fixed = TRUE이 속도를 추가 할 수 있지만,이 같은 관련이 없습니다)

FWIW은 (리처드 Scriven에의 다른 제안에 대해 같은 [[:space:]]를)뿐만 아니라 나를 위해 \s 작품을 사용 :

gsub('\\s', '', temp) 
# [1] "THEBOYWHOLIVEDMr.andMrs." 

로케일 또는 플랫폼 문제로 인해 \s이 작동하지 않는 것 같습니다. ?regex에서 :

[:space:] 공백 문자 : 탭, 줄 바꿈, 세로 탭, 폼 피드, 캐리지 리턴, 공간과 가능한 다른 로케일 종속 자. [중점 사항]

+0

감사합니다. 매우 도움이됩니다. – Beane