[R] inserting one backslash
Seth Falcon
sfalcon at fhcrc.org
Wed Feb 1 19:40:13 CET 2006
On 1 Feb 2006, mailing-lists at rhkoning.com wrote:
> Hello, I am not very familiar with regular expressions and
> escaping. I need to replace the %-signs in a character vector with
> elements as "income 0%-33%# to be replaced by "income 0\%-33\%" (for
> later use in LaTeX). Using
>
> gsub("%","\\%","income 0%-33%")
>
> does not give the desired result. However, gsub("%","\\\\%","income
> 0%-33%") gives "income 0\\%-33\\%", one backslash too much. What is
> the appropriate expression to get the desired output (one backslash
> before each %-sign)?
I think you are on the right track with the second pattern "\\\\%".
There is a difference between what print(s) will display and what
cat(s) will display.
> gsub("%", "\\\\%", "income 0%-33%")
[1] "income 0\\%-33\\%"
> cat(gsub("%", "\\\\%", "income 0%-33%"), "\n")
income 0\%-33\%
The string "\\" in R contains one character (see nchar()), not two.
It can be confusing.
HTH,
+ seth
More information about the R-help
mailing list