2017-02-08 4 views
2

동일한 문장의 컨텍스트 내에서 단어 그룹을 검색하려고합니다. 예를 들면, 나는 단어 "not""sugar" 모두가 단일 문장의 맥락에서 존재 여부를 찾기 위해 노력하고동일한 문장 내의 단어 그룹 검색 R

string = c(
"I do not like sugar. However, I like coffee.", 
"I like sugar. But I do not like coffee.") 

두 텍스트는 단어 "not""sugar"하지만이 첫 번째 텍스트가 전달 수행에있는 "not""sugar" 두 단어 모두 입니다. 두 번째 텍스트에서는 "not""sugar"이 서로 다른 문장에 있습니다.

첫 번째 텍스트는 TRUE이고 두 번째 텍스트는 FALSE입니다. 내가 여기

답변

2

당신은 시도 ....이 [^\\.,!?:;]는 임의의 문자를 가까이 할 수 있었다있어 사이의 문장 부호는이고 설탕과 같습니다.

string = c(
    "I do not like sugar. However, I like coffee.", 
    "I like sugar. But I do not like coffee.", 
    "I do not like coffee. But I love sugar.") 

grepl("not[^\\.,!?:;]*sugar", string) 
+0

답변 해 주셔서 감사합니다. – gibbz00

2

grepl("not\\ssugar", string)을 시도

는 가능한 방법, 확실히 가장 효율적인,도 (!)를 읽어 장점하지만, 그것은 심지어 당신에게 TRUE있는 문장 (들)을 제공하기 쉽습니다. 나는 임의의 단어 개수의 동시 발생을 테스트 할 수 있도록 테스트 할 코드와 코드를 이미 분리했다.

string = c(
    "I do not like sugar. However, I like coffee.", 
    "I like sugar. But I do not like coffee.") 

checkwords=lapply(string, 
FUN=function(str,words=c("sugar","not")) 
{ 
    sapply(strsplit(str,"\\.")[[1]],FUN=function(el){ 
    any(all(sapply(words, 
      FUN=function(wd)grepl(wd,el)))) 
    }) 
}) 
# yes this can be a one line instruction... 
checkwords 

[[1]] 
    I do not like sugar However, I like coffee 
       TRUE     FALSE 

[[2]] 
       I like sugar But I do not like coffee 
        FALSE      FALSE 

그리고 초기 벡터 string의 모든 요소에 대해 적어도 하나의 TRUE의 존재를 확인 :

sapply(checkwords, any) 
[1] TRUE FALSE 
+0

답장을 보내 주셔서 감사합니다. – gibbz00