2014-12-17 6 views
6

Używam grep w niektórych projektach w R (który używa flagi perl=TRUE) i za życia mnie nie mogę zrozumieć, dlaczego R wciąż popełnia błędy. Moje zapytanie brzmi następująco:"' w" jest nierozpoznaną ucieczką "w grep

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

Jednak R rzuca się następujący błąd:

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

Czy próbowałeś: '\\ w'? – anubhava

+0

@anubhava Nie, ale dlaczego to konieczne? Czy to jeszcze nie uciekło? –

+5

Dzieje się tak, ponieważ wyrażenie regularne jest wprowadzane jako ciąg znaków w cudzysłowach. Łańcuch wymaga jednego wyjścia, a silnik wyrażeń regularnych potrzebuje innego wyjścia. na przykład '\\ w' jest przekazywane do silnika wyrażeń regularnych jako' \ w' – anubhava

Odpowiedz

11

Musisz uciec backslashy raz jeszcze w r.

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

               |  |