Could you help me to replace a char by a backslash in R? My trial:
gsub(\"D\",\"\\\\\",\"1D2\")
Thanks in advance
When inputting backslashes from the keyboard, always escape them:
gsub("D","\\\\","1D2")
#[1] "1\\2"
or,
gsub("D","\\","1D2", fixed=TRUE)
#[1] "1\\2"
or,
library(stringr)
str_replace("1D2","D","\\\\")
#[1] "1\\2"
Note: If you want something like "1\2"
as output, I'm afraid you can't do that in R (at least in my knowledge). You can use forward slashes in path names to avoid this.
For more information, refer to this issue raised in R help: How to replace double backslash with single backslash in R.
gsub("\\p{S}", "\\\\", text, perl=TRUE);
\p{S} ... Match a character from the Unicode category symbol.
You need to re-escape the backslash because it needs to be escaped once as part of a normal R string (hence '\\'
instead of '\'
), and in addition it’s handled differently by gsub
in a replacement pattern, so it needs to be escaped again. The following works:
gsub('D', '\\\\', '1D2')
# "1\\2"
The reason the result looks different from the desired output is that R doesn’t actually print the result, it prints an interpretable R string (note the surrounding quotation marks!). But if you use cat
or message
it’s printed correctly:
cat(gsub('D', '\\\\', '1D2'), '\n')
# 1\2