18

我正在将包含反斜杠 ( \) 的字符串写入文件:

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" 
4

3 回答 3

20

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

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

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

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

于 2012-08-04T08:01:27.137 回答
8

阅读本节关于字符向量的内容。

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

例如,\n 表示换行或 \" 可用于输入 ",而 R 不会认为它是字符串的结尾。由于 \ 是转义字符,因此您需要一种方法来输入实际的 . 这是通过使用 \\. 脱身脱身!

于 2012-08-04T06:44:08.397 回答
6

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

> tmp <- scan(what='')
1: \\\\\str
2: 
Read 1 item
> print(tmp)
[1] "\\\\\\\\\\str"
> cat(tmp, '\n')
\\\\\str 
> 
于 2012-08-04T22:46:53.213 回答