我已经在堆栈溢出中阅读了有关此主题的一些问题和答案,但仍然不知道如何解决此问题:
我的目的是将Windows资源管理器中的文件目录字符串转换为R中可识别的格式,例如C:\ Users \ Public需要转换为C:/ Users / Public,基本上单斜杠应该用正斜杠代替。然而,R无法存储原始字符串" C:\ Users \ Public"因为\ U和\ P被认为是转义字符。
{{1}}
我实际编写的是GUI,最终效果是,用户将目录键入或粘贴到输入字段中,按下按钮然后程序将自动处理它。
有人请告诉我如何解决这个问题吗?
答案 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;通常不会发生。