77

我正在寻找一种在 R 中将反斜杠转换为正斜杠的有效方法。有时我在 Windows 中复制目录的链接,我得到如下信息:

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

我怎样才能快速将其更改为C:/Users/jd/Documents/folder/file.txt?我什至无法将上述表达式读为字符。它抛出一个错误

"\u 在以 ""C:\u" 开头的字符串中不使用十六进制数字。

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

4

9 回答 9

63

在 R 中,你必须逃避\with\\所以,你的路径应该是:

x <- "C:\\Users\\jd\\Documents\\folder\\file.txt"

为此,您可以执行以下操作:

x <- readline()

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

最后,要更改\\/到处,您可以使用gsub, 再次转义\, 但两次,如下所示:

gsub("\\\\", "/", x)
# [1] "C:/Users/jd/Documents/folder/file.txt"
于 2013-07-12T00:11:18.213 回答
45

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

snippet pp
    "`r gsub('"', "", gsub("\\\\", "/", readClipboard()))`"

请记住在第二行前面加上一个tab,而不是多个空格以使代码段起作用。

然后键入pp, TAB,然后ENTER粘贴剪贴板上的文本,将反斜杠替换为正斜杠并用引号括起来。

一旦定义了上述代码段,我通常会采取以下步骤将文件路径复制到 RStudio:

  1. 导航到资源管理器中的文件路径。
  2. 如果复制文件路径,则:Shift+Right click在文件上,然后单击Copy as path
  3. 如果复制文件夹路径,则:Alt+ dCtrl+ c
  4. 将窗口更改为 RStudio,然后将焦点放在要粘贴路径的 R 脚本中。
  5. pp, TAB,ENTER粘贴到 RStudio 并将反斜杠转换为正斜杠。
于 2016-10-12T01:54:30.683 回答
14

我使用Path Copy Copy,它是 Windows 的一个插件,允许您在 Windows 中右键单击文件/文件夹时创建自定义复制命令。所以我的右键菜单有“用正斜杠复制完整路径”作为选项,它用正斜杠复制文件/文件夹。我猜每年手动将斜杠更改为 R 的格式可以节省我的时间。

于 2015-11-16T16:31:18.003 回答
12

如果我理解正确,您确实想摆脱字符串编辑。为了能够使用gsub,您必须\\\手动更改所有内容。那么,为什么不直接换\/第一呢?

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

  x=scan("clipboard",what="string")

这给

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

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

于 2013-07-12T00:28:41.160 回答
12

我喜欢使用具有“转换斜线”功能的 RStudio 插件片段插件:

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

插件像包一样安装。要安装这个,请执行以下操作:

devtools::install_github("sfr/RStudio-Addin-Snippets", type = "source")
于 2017-06-19T11:22:36.980 回答
11

自动热键程序:

^+v::
StringReplace, clipboard, clipboard, \,/,All
send %clipboard%

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

于 2015-03-19T20:11:36.257 回答
9

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

x  <- gsub  ( "\\\\",  "/",  readClipboard ()  ) 
于 2014-10-21T13:48:51.473 回答
3

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

writeClipboard(gsub("\\\\", "/", readClipboard()))
于 2017-05-02T19:01:12.290 回答
0

我认为摆脱麻烦的最好方法是在 Rstudio 的右侧面板中找到该文件。然后单击“更多”并单击“设置为工作目录”。然后您将在控制台中看到“setwd(...)”。您可以将其复制到您的代码中。

于 2018-12-02T17:10:46.620 回答