2014-12-17 10 views
6

Ich benutze Grep in einigen Projekten in R (die eine perl=TRUE Flagge verwendet) und für das Leben von mir kann ich nicht herausfinden, warum R wirft Fehler wirft. Meine Frage lautet wie folgt:"' w' ist eine unerkannte Escape" in grep

d$SomeColumn[grep("(?ix)<VNW[^;]*;(dis|dat)> \w*<N\(", d$Right, perl=TRUE)] <- 1 

jedoch R führt den folgenden Fehler:

Error: '\w' is an unrecognized escape in character string starting ""<VNW[^;]*;(dis|dat)> \w" 
+1

Haben Sie versucht: '\\ w'? – anubhava

+0

@anubhava Nein, aber warum ist das notwendig? Ist es noch nicht entkommen? –

+5

Es ist, weil Regex als Zeichenfolge in Anführungszeichen eingegeben wird. String benötigt eine Escaping-Engine und Regex-Engine benötigt eine weitere Escaping-Engine. z.B. "\\ w" wird an die Regex-Engine als "\ w" übergeben – anubhava

Antwort

11

Sie müssen die Schrägstriche noch einmal in r entkommen.

d$SomeColumn[grep("(?ix)<VNW[^;]*;(dis|dat)> \\w*<N\\(", d$Right, perl=TRUE)] <- 1 

               |  |