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

时间:2012-08-04 06:37:02

标签: r file-io 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))

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

\str
\\str

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

x="\\\\\\\\\\str" 

3 个答案:

答案 0 :(得分:18)

  

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

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

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

\\\str无效的原因是因为它被解释为\\(对应于单个\)后跟\s,这是无效的,因为“逃脱s”没有任何意义。

答案 1 :(得分:8)

读取有关字符向量的this section

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

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

答案 2 :(得分:6)

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

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