我正在使用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"
答案 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
>