从R for Windows中消除反斜杠刺激

时间:2009-09-10 19:29:02

标签: r autohotkey

在我的R life早期,我发现R和Windows在目录和子目录之间的分隔符时位于不同页面上的痛苦。虽然我知道这个问题,但我还是手动不得不在我的所有反斜杠前放一个反斜杠或者用正斜杠替换所有反斜杠。

我喜欢用我在计算机上运行的几个应用程序中的任何一个复制路径名或整个文件名(例如XYPlorer,Everything by voidtools),然后将其粘贴到Tinn-R中。无论如何,我可以自动完成我目前正在手动完成的任务。

  • Tinn-R有设置吗?
  • R?
  • 中有设置吗?
  • 默认情况下是否有可以为我执行此操作的autohotkey脚本?

那些不知道我在说什么的人的背景

引用R for Windows FAQ,版本为R-2.9.2,B。D. Ripley和D. J. Murdoch

  

R中的反斜率必须加倍   字符串,例如一个   需求   ` “d:\ R-2.9.2 \库\ xgobi \脚本\ xgobi.bat””。   你可以让自己的生活更轻松   通过使用正斜杠作为路径   分隔符:它们在Windows下工作

9 个答案:

答案 0 :(得分:6)

我写了一个 autohotkey 脚本,它是通过输入“rfil”触发的 - 没有引号。

:O:rfil:: ;replaces backslashes with forward slashes in a file name that is stored on the clipboard
StringReplace,clipboard,clipboard,\,/,All
send %clipboard%
return

如果有人能比使用send命令更快地告诉我,我会很感激。 我有一个autohotkey脚本一直在我的所有计算机上运行,​​所以我不必下载新的软件来运行这个脚本。我只是将它添加到我的默认脚本文件中。

如果你想要我,我会很乐意解释我的所作所为。

答案 1 :(得分:2)

ClipPath添加了右键菜单选项,可以选择要粘贴的斜杠类型。

通过Getting Genetics Done,看起来它通常可以成为R用户的有用资源。

答案 2 :(得分:2)

每当我在RStudio中粘贴任何内容时,我已经调整了以下autohotkey代码共享以用正斜杠替换所有反斜杠。这种方法有利有弊。

优点:您不必考虑它。只有当活动窗口是RStudio时,代码才会运行。

缺点:每次在R中粘贴内容时都会调用代码。每次尝试查找反斜杠并用正斜杠替换它们时。

GroupAdd, R, RStudio

;replaces backslashes with forward slashes in a file name that is stored on the clipboard
#IfWinActive ahk_group R
   ^v::
      StringReplace,clipboard,clipboard,\,/,All
      send %clipboard%
   return
#IfWinActive

答案 3 :(得分:1)

我使用搜索&替换,但当然,它不是完全自动的,你必须小心不要替换“\ t”或“\ n”。

答案 4 :(得分:1)

不完全是您正在寻找的答案,但R有自己的shell脚本函数,我经常使用:

list.files(,full = TRUE)[返回带有适当分隔符的完整路径]

file.path()[与特定于操作系统的分隔符连接]

依旧......

答案 5 :(得分:1)

您可以围绕所有路径名创建包装函数:

> replace.slash <- function(path.name) gsub("\\\\","/",path.name)
> path.name <- "c:\\tmp\\"
> replace.slash(path.name)
[1] "c:/tmp/"

[编辑]:谢谢哈德利。我在那里纠正了错误。

顺便说一句,我发现这非常useful discussion on this subject

答案 6 :(得分:1)

这是AutoIt代码,它执行相同的操作(将\替换为/)。

Local $text1 = ClipGet()
$text2=StringReplace($text1,"\","/")
ClipPut($text2)

答案 7 :(得分:0)

为什么不创建一个检查操作系统的函数并返回正确的文件分隔符(我相信的java解决方案)?

file_sep <- function(){
ifelse(.Platform$OS.type == "unix", "/", "//")
}
file_sep()
如果你愿意,你可以选择一个较短的名字。这里的一个重大缺陷是你必须将文件路径粘贴在一起,但如果你正在开展大型项目,它仍然值得长期使用。

答案 8 :(得分:0)

在@Farrel的代码上略微扩展(非常感谢!),这是我的AutoHotkey脚本,它将获取我选择的任何文件的完整文件路径,然后(如果需要)交换斜杠以在R中更好地使用。

该脚本还会用完整的网络路径替换所有映射的驱动器。要使用此功能,您需要编辑此脚本以查找特定的映射驱动器,然后将这些驱动器号替换为完整路径。

设置需要一些时间,但是它非常有用。我每天都用这个。

;If Windows explorer is active...
#IfWinActive ahk_class CabinetWClass 

; ALT + F - Get the filepath to the file
!f::
SendInput, ^c
Sleep 100
Clipboard := Clipboard
return

;Check for and replace mapped drive names on the clipboard with full file paths
If InStr(Clipboard,"X:\",1) {
Clipboard := "\\SERVER_NAME\g$\" SubStr(Clipboard,4, (StrLen(Clipboard )))
} else if InStr(Clipboard,"K:\",1) {
Clipboard := "\\SERVER_NAME\Data\" SubStr(Clipboard,4, (StrLen(Clipboard )))
} else if InStr(Clipboard,"Q:\",1) {
Clipboard := "\\SERVER_NAME\Data\" SubStr(Clipboard,4, (StrLen(Clipboard )))
} else if InStr(Clipboard,"L:\",1) {
Clipboard := "\\SERVER_NAME\" SubStr(Clipboard,4, (StrLen(Clipboard )))
} 
Return

; ALT + S - Replaces backslashes with forward slashes (helpful for R)
; Source: https://stackoverflow.com/questions/1407238/relief-from-backslash-irritation-in-r-for-windows
!s::
StringReplace,clipboard,clipboard,\,/,All
send %clipboard%
return

; Scripts below this point will run in any active window
#IfWinActive