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)
Jos*_*lan 23
如果您希望在粘贴路径时使用最少的击键次数来转换反斜杠,请使用如下定义的RStudio 片段:
snippet pp
"`r gsub('"', "", gsub("\\\\", "/", readClipboard()))`"
Run Code Online (Sandbox Code Playgroud)
然后键入pp,TAB,ENTER和你的剪贴板中的文本粘贴,反斜杠替换为正斜杠并用引号引起.
以下是在定义上述代码段后,我通常采取的将文件路径复制到RStudio的步骤:
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格式的日子.
r"(C:\myfolder\)"R 具有将字符串中的反斜杠转换为双反斜杠的内置命令。
x <- r"(C:\myfolder\)"
print(x)
Run Code Online (Sandbox Code Playgroud)
“C:\\我的文件夹\\”
唯一的问题是它不能接受变量,只能接受类型化的字符串
自动计划程序:
^+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)
我喜欢使用具有"转换斜杠"功能的RStudio加载项snippetsaddin:
它将反转所选代码块中的所有斜杠,或者如果没有选择(或只选择空白),它将反转剪贴板中的所有斜杠并将其粘贴到当前光标位置( S).
Addins就像包装一样.要安装此功能,请执行以下操作:
devtools::install_github("sfr/RStudio-Addin-Snippets", type = "source")
Run Code Online (Sandbox Code Playgroud)
没有片段定义的解决方案是
writeClipboard(gsub("\\\\", "/", readClipboard()))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
38260 次 |
| 最近记录: |