2013-08-30 13 views
16

Ich versuche, den folgenden Code zu verwenden, um zwei Punkte nur zu ersetzen:Ersetzen Sie zwei Punkte in einer Reihe mit gsub

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

und bekommen:

[1] "test..1" 

Ich habe versucht, verschiedene Kombinationen von Escape Strings, einschließlich Klammern [] ohne Erfolg.
Was mache ich falsch?

Antwort

30

Wenn Sie fixed = TRUE verwenden wollen, verwenden Sie die (nicht interpretiert) Charakter .:

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

Ansonsten innerhalb von regulären Ausdrücken (fixed = FALSE), . hat eine besondere Bedeutung (ein beliebiges Zeichen), so dass Sie‘ Ich möchte es mit einem Backslash voranstellen, um "das Punktzeichen" zu bedeuten:

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

Ich habe mich bemühte, eine Zeichenklasse anstelle eines Escape zu verwenden. 'gsub (" [.] {2} ",". ", test)' –