我有一个文件名字符串:
directoryLocation<-"\Users\me\Dropbox\Work\"
如何提取所有“\”并将其替换为“\”?在其他语言中,您可以遍历字符串,然后逐个字符地替换,但我认为您不能在 R 中做到这一点。
我试过了
substr(directoryLocation,1,1)
但它针对这种情况进行了高度优化......它怎么能更普遍?
谢谢
我有一个文件名字符串:
directoryLocation<-"\Users\me\Dropbox\Work\"
如何提取所有“\”并将其替换为“\”?在其他语言中,您可以遍历字符串,然后逐个字符地替换,但我认为您不能在 R 中做到这一点。
我试过了
substr(directoryLocation,1,1)
但它针对这种情况进行了高度优化......它怎么能更普遍?
谢谢
gsub
是通用工具,但正如其他人所指出的,您需要一个令人困惑的四个斜杠来解释转义:您需要同时对 R 文本和正则表达式引擎进行转义。
如果使用 Windows,另一种方法是使用normalizePath
和设置winslash
参数:
normalizePath(directoryLocation,winslash="/",mustWork=FALSE)
[1] "C:/Users/me/Dropbox/Work/"
尽管这可能会在将相对路径扩展为绝对路径方面执行额外的工作(此处通过添加前缀来查看C:
)。
理论上这会做你想要的
gsub("\\\", "/", directoryLocation)
然而...
R> directoryLocation<-"\\Users\\me\\Dropbox\\Work\\"
R> directoryLocation
[1] "\\Users\\me\\Dropbox\\Work\\"
R> gsub("\\\\", "/", directoryLocation)
[1] "/Users/me/Dropbox/Work/"
至少在 Windows 上需要转义所有反斜杠,但这gsub
是您想要的。
gsub("\\\\","/","\\Users\\me\\Dropbox\\Work\\")
[1] "/Users/me/Dropbox/Work/"