2013-08-30 12 views
16

Próbuję użyć następującego kodu zastąpić dwie kropki tylko jeden:Wymień dwie kropki na sznurku z gsub

test<-"test..1" 
gsub("\\..", ".", test, fixed=TRUE) 

i uzyskiwanie:

[1] "test..1" 

Próbowałem kilka kombinacji ciągi escape, w tym nawiasy kwadratowe [] bez powodzenia.
Co robię źle?

Odpowiedz

30

Jeśli masz zamiar użyć fixed = TRUE użyj (non-interpretować) charakter .:

> gsub("..", ".", test, fixed = TRUE) 

inaczej, w wyrażeniach regularnych (fixed = FALSE) . ma szczególne znaczenie (dowolny znak), więc” Będę chciał poprzedzić go odwrotnym ukośnikiem, co oznacza "znak kropki":

> gsub("\\.\\.", ".", test) 
> gsub("\\.{2}", ".", test) 
+11

Ja lubiłem używać klasy postaci zamiast ucieczki. 'gsub (" [.] {2} ",". ", test)' –