Ich möchte gsub
verwenden, um jedes Auftreten eines umgekehrten Schrägstrichs in einer Zeichenfolge durch 2 umgekehrte Schrägstriche zu ersetzen.R - gsub ersetzt Backslashes
Derzeit, was ich habe versucht, ist gsub("\\\\", "\\", x)
. Dies scheint jedoch nicht zu funktionieren. Wenn ich jedoch den Ausdruck so ändere, dass jeder umgekehrte Schrägstrich durch "a" ersetzt wird, funktioniert das problemlos.
> gsub("\\\\", "\\", "\\")
[1] ""
> gsub("\\\\", "a", "\\")
[1] "a"
> gsub("\\\\", "\\\\", "\\")
[1] "\\"
Das letzte Zeichen ist nur ein einzelner Backslash; R druckt nur 2, weil er mit dem umgekehrten Schrägstrich Zeichen mit Auslassung druckt. Mit nchar
wird bestätigt, dass die Länge 1 ist.
Was verursacht diese Funktionalität? Das zweite Argument zu gsub
ist kein regulärer Ausdruck. Daher sollten im Zeichenfolgenliteral vier umgekehrte Schrägstriche in ein Zeichen mit zwei umgekehrten Schrägstrichen konvertiert werden. Es macht noch weniger Sinn, dass der erste obige Aufruf eine leere Zeichenfolge zurückgibt.
Ich glaube, Sie haben Ihre Parametrierauftrag verwirrt. Der erste Parameter ist, was Sie suchen. Also, wenn Sie jeden Schrägstrich durch zwei ersetzen möchten, wollen Sie nicht: 'gsub (" \\\\ "," \\\\\\\ ", x)'? Wenn Sie den Wert "cat()" anstelle des standardmäßigen impliziten "print()" verwenden, wird der ausgeblendete Teil des Schrägstrichs nicht angezeigt. – MrFlick
Siehe auch [hier] (http://stackoverflow.com/questions/11806501/backslash-in-r-string) –