Vorrei utilizzare gsub
per sostituire ogni occorrenza di una barra rovesciata in una stringa con 2 barre rovesciate.R - gsub che sostituisce i backslash
Attualmente, quello che ho provato è gsub("\\\\", "\\", x)
. Questo non sembra funzionare però. Tuttavia, se cambio l'espressione in sostituzione di ogni backslash con "a", funziona correttamente.
> gsub("\\\\", "\\", "\\")
[1] ""
> gsub("\\\\", "a", "\\")
[1] "a"
> gsub("\\\\", "\\\\", "\\")
[1] "\\"
L'ultimo carattere è solo un singolo backslash; R stampa solo 2 perché stampa caratteri di escape con il backslash. L'utilizzo di nchar
conferma che la lunghezza è 1.
Quali sono le cause di questa funzionalità? Il secondo argomento su gsub
non è un'espressione regolare, quindi avere 4 barre rovesciate nella stringa letterale deve essere convertito in un carattere con 2 barre rovesciate. Ha ancora meno senso che la prima chiamata gsub
restituisca una stringa vuota.
Penso che tu abbia l'ordine dei parametri confuso. Il primo parametro è quello che stai cercando. Quindi, se vuoi sostituire ogni barra con due, non vuoi: 'gsub (" \\\\ "," \\\\\\\\ ", x)'? Inoltre, se si 'cat()' il valore piuttosto che l'uso implicito 'print()', non si vede la parte di escape della barra. – MrFlick
Vedere anche [qui] (http://stackoverflow.com/questions/11806501/backslash-in-r-string) –