在R中替换单个反斜杠

时间:2016-08-26 10:34:57

标签: r string escaping

我已经在堆栈溢出中阅读了有关此主题的一些问题和答案,但仍然不知道如何解决此问题:

我的目的是将Windows资源管理器中的文件目录字符串转换为R中可识别的格式,例如C:\ Users \ Public需要转换为C:/ Users / Public,基本上单斜杠应该用正斜杠代替。然而,R无法存储原始字符串" C:\ Users \ Public"因为\ U和\ P被认为是转义字符。

{{1}}

我实际编写的是GUI,最终效果是,用户将目录键入或粘贴到输入字段中,按下按钮然后程序将自动处理它。

有人请告诉我如何解决这个问题吗?

2 个答案:

答案 0 :(得分:3)

当你需要在R中的字符串中使用反斜杠时,需要加上双反斜杠。此外,当您使用SessionDao dao = new SessionDao(hibernateBundle.getSessionFactory()); ExampleAuthenticator exampleAuthenticator = new UnitOfWorkAwareProxyFactory(hibernateBundle) .create(ExampleAuthenticator.class, SessionDao.class, dao); 时,第一个参数被解析为正则表达式,并且它无效,因为它只包含必须转义的单个字面反斜杠。实际上,您需要gsub("\\", "/", str)将其视为带有gsub纯文本

但是,您可能希望使用normalizePath,请参阅this SO thread

答案 1 :(得分:1)

dirTransformer <- function(str){
  str.trns <- gsub("\\\\", "/", str)
  return(str.trns)
}

str <- readline()
C:\Users\Public

dirTransformer(str)

我不确定你打算如何让用户输入GUI的路径,但是当使用readline()然后输入C:\ Users \ Public unquoted时,R会将其读入:

> str
[1] "C:\\Users\\Public"

然后我们要替换&#34; \\&#34;使用&#34; /&#34;,但要逃避&#34; \\&#34;我们需要&#34; \\\\&#34;在gsub。

我无法确定用户的输入将如何在GUI中读入R中,但R很可能会像使用readline示例时那样在字符串中转义\ s。您尝试创建的字符串&#34; C:\ Users \ Public&#34;通常不会发生。