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

时间:2013-07-12 00:05:42

标签: r escaping filepath

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

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

如何快速将其更改为C:/Users/jd/Documents/folder/file.txt?我甚至不能将上面的表达作为字符阅读。它会抛出错误

  

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

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

9 个答案:

答案 0 :(得分:41)

在R中,您必须使用\转义\\所以,您的路径应为:

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

要做到这一点,你可以这样做:

x <- readline()

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

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

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

答案 1 :(得分:17)

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

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

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

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

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

答案 2 :(得分:11)

如果我理解正确,你确实想摆脱字符串编辑。为了能够使用gsub,您必须先手动将所有\更改为\\。那么,为什么不首先将\更改为/

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

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

这给出了

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

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

答案 3 :(得分:8)

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

答案 4 :(得分:7)

autohotkey程序:

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

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

答案 5 :(得分:6)

我喜欢使用具有函数snippetsaddin的RStudio加载项'Convert slash'

  

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

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

devtools::install_github("sfr/RStudio-Addin-Snippets", type = "source")

答案 6 :(得分:5)

以下是从剪贴板转换地址的一步法

x  <- gsub  ( "\\\\",  "/",  readClipboard ()  ) 

答案 7 :(得分:1)

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

writeClipboard(gsub("\\\\", "/", readClipboard()))

答案 8 :(得分:0)

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