在中的R串或路径逸出\\(Escaping \\ in string or paths in R)

2019-07-17 21:45发布

Windows将与路径\其中R不接受。 所以,我想写这将转换功能“\”到“/”。 例如:

chartr0 <- function(foo) chartr('\','\\/',foo)

然后使用chartr0为...

source(chartr0('E:\RStuff\test.r'))

chartr0不工作。 我想,我无法逃脱“/”。 我想逃避/可在多种场合很重要。

此外,有没有R中的方式,使得我没有使用chartr0每次可自动创建R中的environemnt这就要求将所有路径chartr0或使用某种临时使用像使用options

Answer 1:

你的根本问题是因为它看到一个反斜杠超过几小写字母之外的任何字符之前,反斜杠本身,引号或某些约定进入八进制,十六进制或Unicode序列R将尽快发出错误信号的条件。 这是因为解释看到反斜杠作为消息“逃”字的常用翻译和做别的事情。 如果你想在你的性格元素一个反斜杠,你需要输入2反斜线。 这将创建一个反斜杠:

nchar("\\")
#[1] 1

_Intro_to_R_的“特征向量”部分说:

“中的字符串输入或者使用匹配双(”)或单引号('),但使用双引号(或有时没有引号)打印。 他们用C风格的转义序列,使用\作为转义字符,所以\输入并打印\,而双引号内“是输入\”。 其他有用的转义序列的\ n,换行,\ t,标签和\ B,退格,看到了吗?报价的完整列表“。

 ?Quotes


Answer 2:

chartr0 <- function(foo) chartr('\\','/',foo)
chartr0('E:\\RStuff\\test.r')

你可以不写E:\ Rxxxx,因为[R认为R的逃脱。



Answer 3:

问题是,在你的代码的每一个斜杠和反斜杠错误地逃了出来,导致一个无效的字符串或错误的字符串中使用。 你需要阅读了关于哪些字符需要转义以及如何。 看看转义序列的在下面的链接列表。 任何未列出的存在(如正斜杠)字面上处理,并且不需要任何转义。

http://cran.r-project.org/doc/manuals/R-lang.html#Literal-constants



文章来源: Escaping \\ in string or paths in R
标签: r escaping