在R中有效地将反斜杠转换为正斜杠

Jd *_*aba 51 r escaping filepath

我正在寻找一种有效的方法来将反斜杠转换为R中的正斜杠.有时我从windows复制目录的链接,我得到这样的东西:

C:\Users\jd\Documents\folder\file.txt

如何快速将其更改为C:/Users/jd/Documents/folder/file.txt?我甚至无法将上述表达式视为字符.它抛出一个错误

"\ u在字符串开头没有十六进制数字时使用""C:\ u".

我知道R中的TAB功能有助于快速找到位置,但只是想知道是否还有其他工作.我也可以将工作目录更改为文件夹的位置.我只是在玩耍并尝试将反斜杠转换为正斜杠并且不是直截了当所以因为好奇而问这个.

Aru*_*run 48

在R,你已经逃脱\\\那么,你的路径应该是:

x <- "C:\\Users\\jd\\Documents\\folder\\file.txt"
Run Code Online (Sandbox Code Playgroud)

为此,您可以:

x <- readline()
Run Code Online (Sandbox Code Playgroud)

然后,在提示符下,粘贴未修改的路径(CTRL + V然后按ENTER键)

最后,要改变\\/任何地方,你可以使用gsub,再次通过逃避\,但两次,如下:

gsub("\\\\", "/", x)
# [1] "C:/Users/jd/Documents/folder/file.txt"
Run Code Online (Sandbox Code Playgroud)

  • `readClipboard()`是另一个选项,它会自动将复制文本中的反斜杠从一个转换为两个. (18认同)
  • 在我的机器上,路径用双引号引起来复制:““ C:\ Users \ ... \ file.txt”`。当我用`readline()`读到它时,周围的引号被转义,字符串看起来像这样:`“ \” C:\\ Users \\ ... \\ file.txt \“”`需要比答案中给出的正则表达式更复杂的正则表达式才能将其转换为可用路径。如果您使用`scan(what =“ character”)`而不是`readline()`,则可以避免此问题。 (2认同)

Jos*_*lan 23

如果您希望在粘贴路径时使用最少的击键次数来转换反斜杠,请使用如下定义的RStudio 片段:

snippet pp
    "`r gsub('"', "", gsub("\\\\", "/", readClipboard()))`"
Run Code Online (Sandbox Code Playgroud)

然后键入pp,TAB,ENTER和你的剪贴板中的文本粘贴,反斜杠替换为正斜杠并用引号引起.

以下是在定义上述代码段后,我通常采取的将文件路径复制到RStudio的步骤:

  1. 导航到资源管理器中的文件路径.
  2. 如果复制文件路径,则:Shift+ Right clickon file,然后单击Copy as path.
  3. 如果复制文件夹路径,则:Alt+ d,Ctrl+ c.
  4. 将窗口更改为RStudio,并将焦点放在要粘贴路径的R脚本中.
  5. pp,TAB,ENTER将其粘贴到RStudio和转换反斜杠正斜杠.

  • 2 年后,我写了一个名为“pp”的片段,并兴奋地回到这个问题,希望将其作为答案发布,结果却看到了这个 :-( +1 (2认同)
  • gsub 和引号确保从资源管理器中的地址栏复制的路径(没有 qutoes)和通过“复制为路径”(有 qutoes)复制的路径都粘贴有引号。 (2认同)

cry*_*111 11

如果我理解正确,你确实想摆脱字符串编辑.为了能够使用gsub,你将不得不改变所有\\\手动第一.那么,为什么不改变\/第一位呢?

如果剪贴板中有字符串,则可以使用

  x=scan("clipboard",what="string")
Run Code Online (Sandbox Code Playgroud)

这给了

  "C:\\Users\\jd\\Documents\\folder\\file.txt"
Run Code Online (Sandbox Code Playgroud)

也就是说,它\\\自动转换为全部.我知道 - 不是很方便,但我知道绕过编辑的唯一方法.


小智 8

我使用Path Copy Copy,它是Windows的一个插件,允许您在Windows中右键单击文件/文件夹时创建自定义复制命令.所以我的右键菜单有"复制带有正斜杠的完整路径"作为选项,它使用正斜杠复制文件/文件夹.我猜它每年都会节省我从手动更改斜线到R格式的日子.


plu*_*uke 8

r"(C:\myfolder\)"R 具有将字符串中的反斜杠转换为双反斜杠的内置命令。

x <- r"(C:\myfolder\)"
print(x)
Run Code Online (Sandbox Code Playgroud)

“C:\\我的文件夹\\”

唯一的问题是它不能接受变量,只能接受类型化的字符串


hed*_*red 7

自动计划程序:

^+v::
StringReplace, clipboard, clipboard, \,/,All
send %clipboard%
Run Code Online (Sandbox Code Playgroud)

在控制+ c文件路径后,使用control + shift + v进行粘贴


小智 6

这是从剪贴板转换地址的一种方法

x  <- gsub  ( "\\\\",  "/",  readClipboard ()  ) 
Run Code Online (Sandbox Code Playgroud)


Ben*_*Ben 6

我喜欢使用具有"转换斜杠"功能的RStudio加载项snippetsaddin:

它将反转所选代码块中的所有斜杠,或者如果没有选择(或只选择空白),它将反转剪贴板中的所有斜杠并将其粘贴到当前光标位置( S).

Addins就像包装一样.要安装此功能,请执行以下操作:

devtools::install_github("sfr/RStudio-Addin-Snippets", type = "source")
Run Code Online (Sandbox Code Playgroud)


use*_*rJT 5

没有片段定义的解决方案是

writeClipboard(gsub("\\\\", "/", readClipboard()))
Run Code Online (Sandbox Code Playgroud)