2016-05-16 2 views
0

Hallo: wie bekomme ich R „Nein“ mit „nicht“, aber nicht ersetzen „nicht“ mit „Nott“ ersetzengenaue Worte mit stri_replace_all_fixed

Der folgenden Code funktioniert sehr gut mit meinem aktuellen Wörterbücher, aber nicht mit einem anderen Wörterbuch, das negierte Wörter durch einige standardisierte Wörter ersetzt.

#patterns 
replace<-('no') 
#replacements 
with<-c('not') 
#data frame 
neg<-data.frame(replace=replace, with=with) 
#text to modify 
out<-c('not acceptable no good') 
#current code 
stri_replace_all_fixed(out, neg$replace, neg$with, vectorize_all=FALSE) 

Antwort

3

Sie benötigen einen regulären Ausdruck zu übergeben, die no als ganzes Wort übereinstimmen:

> replace<-('\\bno\\b') ## <= \b is a word boundary 
> with<-c('not') 
> neg<-data.frame(replace=replace, with=with) 
> out<-c('not acceptable no good') 
> stri_replace_all_regex(out, neg$replace, neg$with, vectorize_all=FALSE) 
[1] "not acceptable not good" 
+0

Muss ich besorgt über die Leerzeichen sein müssen, in dem Text „no“ umgibt? Oder ist die Wortgrenze dafür verantwortlich? – spindoctor

+0

Wortgrenzen sind Assertionen mit der Breite Null, die keinen Text enthalten. Es sollte keine Probleme mit Leerzeichen geben. –