如何在R字符串中转义反斜杠

Fnz*_* Xx 14 file-io r escaping backslash

我正在使用R将字符串写入文件:

> x1="\\str"
> x2="\\\str"
Error: '\s' is an unrecognized escape in character string starting "\\\s"
> x2="\\\\str"
> write(file='test',c(x1,x2))
Run Code Online (Sandbox Code Playgroud)

当我打开名为的文件时test,我看到了这个:

\str
\\str
Run Code Online (Sandbox Code Playgroud)

如果我想得到一个包含5个反斜杠的字符串,我应该写10个反斜杠,像这样吗?

x="\\\\\\\\\\str" 
Run Code Online (Sandbox Code Playgroud)

aio*_*obe 19

[...] 如果我想得到一个包含5的字符串\,我应该写10\ [...]

是的你应该.要\在字符串中写入单个字符,请将其写为"\\".

这是因为它\是一个特殊字符,保留用于转义后面的字符.(也许你认为\n是换行符.)如果你想写一个包含单个字符串的字符串,它也很有用".你把它写成"\"".

之所以\\\str无效,是因为它被解释为\\(对应于单个\)后跟\s,这是无效的,因为"转义s"没有意义.

  • 没有相当于Python的["原始字符串"](http://stackoverflow.com/a/2081708/1175496),如:`r'allows\unescaped\backslashes'`? (8认同)
  • @TheRedPea 是的,从“R 4.0.0”开始支持原始字符串。请参阅例如[在 R 中的字符串或路径中转义反斜杠 (\)](/sf/ask/992970121/#63078969) (3认同)

sea*_*ody 8

阅读本节有关字符向量的内容.

本质上,它表示当您输入字符串文字时,将它们用一对引号("或")括起来.在这些引号中,您可以使用\作为转义字符创建特殊字符.

例如,\n表示新行或\"可用于输入"而不用R认为它是字符串的结尾.由于\是一个转义字符,你需要一种输入实际的方法.这是通过使用\\来完成的.逃离逃生!


Gre*_*now 6

请注意,反斜杠的加倍是因为您在命令行输入字符串,并且字符串首先由R解析器解析.您可以以不同的方式输入字符串,其中一些不需要加倍.例如:

> tmp <- scan(what='')
1: \\\\\str
2: 
Read 1 item
> print(tmp)
[1] "\\\\\\\\\\str"
> cat(tmp, '\n')
\\\\\str 
> 
Run Code Online (Sandbox Code Playgroud)