I'm writing strings which contain backslashes (\
) to a file:
x1 = "\\str"
x2 = "\\\str"
# Error: '\s' is an unrecognized escape in character string starting "\\\s"
x2="\\\\str"
write(file = 'test', c(x1, x2))
When I open the file named test
, I see this:
\str
\\str
If I want to get a string containing 5 backslashes, should I write 10 backslashes, like this?
x = "\\\\\\\\\\str"
The first two backslashes ( \\ ) indicate that you are escaping a single backslash character. The third backslash indicates that you are escaping the double-quote that is part of the string to match.
A sequence in a string that starts with a \ is called an escape sequence and allows us to include special characters in our strings.
The use of the word "escape" really means to temporarily escape out of parsing the text and into a another mode where the subsequent character is treated differently. Depending on the character, a backslash may be telling the compiler/interpreter that the following character has no special meaning.
[...] If I want to get a string containing 5
\
,should i write 10\
[...]
Yes, you should. To write a single \
in a string, you write it as "\\"
.
This is because the \
is a special character, reserved to escape the character that follows it. (Perhaps you recognize \n
as newline.) It's also useful if you want to write a string containing a single "
. You write it as "\""
.
The reason why \\\str
is invalid, is because it's interpreted as \\
(which corresponds to a single \
) followed by \s
, which is not valid, since "escaped s
" has no meaning.
Have a read of this section about character vectors.
In essence, it says that when you enter character string literals you enclose them in a pair of quotes (" or '). Inside those quotes, you can create special characters using \ as an escape character.
For example, \n denotes new line or \" can be used to enter a " without R thinking it's the end of the string. Since \ is an escape character, you need a way to enter an actual . This is done by using \\. Escaping the escape!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With