2017-10-09 1 views
-1

Ich versuche Vorverarbeitung in Corpus in R zu tun, und ich muss die Wörter entfernen, die mit $ beginnen. Unter Code entfernt die $, aber nicht die $ Wörter, ich bin verwirrt.

inspect(data.corpus1[1:2]) 
# <<SimpleCorpus>> 
# Metadata: corpus specific: 1, document level (indexed): 0 
# Content: documents: 2 
# 
# [1] $rprx loading mid .60's, think potential. 12m vol fri already 11m today 
# [2] members report success see track record $itek $rprx $nete $cnet $zn $cwbr $inpx 

removePunctWords <- function(x) { 
    gsub(pattern = "\\$", "", x) 
} 
data.corpus1 <- 
    tm_map(data.corpus1, 
     content_transformer(removePunctWords)) 
inspect(data.corpus1[1:2]) 
# <<SimpleCorpus>> 
# Metadata: corpus specific: 1, document level (indexed): 0 
# Content: documents: 2 
# 
# [1] rprx loading mid .60's, think potential. 12m vol fri already 11m today 
# [2] members report success see track record itek rprx nete cnet zn cwbr inpx 
+0

Ich bin nicht der beste mit Regex, aber vielleicht ein "."? Zum Beispiel: 'gsub (pattern =" \\ $. * "," ", X)'? – shea

+0

@shea Das würde alles nach dem ersten $ töten. Sie möchten nur $ und die folgenden Wortzeichen eliminieren. – G5W

+0

@ G5W danke für die Erklärung. Ich wusste nicht, dass das ". *" _that_ gierig sein würde. – shea

Antwort

3

Ihr regulärer Ausdruck gibt nur $ an. Sie müssen den Rest des Wortes einschließen.

removePunctWords <- function(x) { 
    gsub(pattern = "\\$\\w*", "", x) 
} 
+0

Zwei Dinge, 1) das wird alle '$' entfernen, auch wenn sie nicht am Anfang eines Wortes existieren. 2) Möglicherweise muss an der Vorderseite der Regex ein Barrierenzeichen hinzugefügt werden, um zu verhindern, dass ein Dollarzeichen in der Mitte eines Wortes, z. ** Rechnung $ s ** oder ** co $ t **. OP gibt nicht das erwartete Verhalten für diese Szenarien an, aber ich denke, es ist erwähnenswert – emilliman5

Verwandte Themen