【问题标题】:How to escape backslashes in R string如何在 R 字符串中转义反斜杠
【发布时间】:2012-08-02 03:19:23
【问题描述】:

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

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" 

【问题讨论】:

标签: r file-io escaping backslash


【解决方案1】:

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

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

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

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

【讨论】:

【解决方案2】:

阅读 this section 关于字符向量的内容。

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

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 2011-06-08
      • 2012-01-26
      • 2014-12-04
      • 2021-12-16
      • 1970-01-01
      • 1970-01-01
      • 2012-03-26
      • 2012-12-20
      相关资源
      最近更新 更多