R中使用Windows的文件路径问题("字符串中的十六进制数字"错误)

use*_*850 84 r filepath backslash path-separator

我在Windows上运行R,并在桌面上有一个csv文件.我加载如下,

x<-read.csv("C:\Users\surfcat\Desktop\2006_dissimilarity.csv",header=TRUE)
Run Code Online (Sandbox Code Playgroud)

但R给出以下错误消息

错误:'\ U'在没有以十六进制数字开头的字符串中使用"C:\ U"

那么加载这个文件的正确方法是什么.我正在使用Vista

smi*_*tec 129

更换所有\\\.

它试图逃避下一个字符,在这种情况下U插入一个\你需要插入一个转义\\\


Tyl*_*ker 27

请不要将此响应标记为正确,因为smitec已正确回答.我在我的第一个库中包含了一个便利函数,它将windows路径转换为在R中工作的格式(Sacha Epskamp描述的方法).只需将路径复制到剪贴板(ctrl + c),然后运行该功能pathPrep().不需要争论.路径正确打印到控制台并写入剪贴板,以便轻松粘贴到脚本.希望这是有帮助的.

pathPrep <- function(path = "clipboard") {
    y <- if (path == "clipboard") {
        readClipboard()
    } else {
        cat("Please enter the path:\n\n")
        readline()
    }
    x <- chartr("\\", "/", y)
    writeClipboard(x)
    return(x)
}
Run Code Online (Sandbox Code Playgroud)


pet*_*ner 9

试试这个: x <- read.csv("C:/Users/surfcat/Desktop/2006_dissimilarity.csv", header=TRUE)

说明

R无法正确理解正常的Windows路径,因为它"\"具有特殊含义 - 它用作转义字符,以赋予以下字符特殊含义(\n对于换行符,\t对于制表符,\r对于回车符,...,请查看此处).

因为R不知道\U它抱怨的顺序.只需更换"\""/",也可以附加 "\"逃脱 "\"从它的特殊意义,一切运作顺利.

替代

在Windows上,我认为在R中使用Windows特定路径改善工作流程的最佳方法是使用AutoHotkey,它允许自定义热键:

  • 定义一个热键,例如Cntr- Shift-V
  • 为它指定一个程序,用slaches替换你剪贴板中的反斜杠......
  • 当过要复制的路径粘贴到R您可以使用Cntr- Shift- V而不是Cntr-V
  • ET-瞧

AutoHotkey Code Snippet (链接到主页)

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


Jos*_*lan 5

我的解决方案是定义一个RStudio 片段,如下所示:

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

此代码段将反斜杠转换\为双反斜杠\\。如果您更喜欢将反斜杠转换为正斜杠,以下版本将适用/

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

定义了首选代码段后,通过键入p- p- TAB- ENTER(即 pp 然后按 Tab 键然后输入)从剪贴板粘贴路径,该路径将神奇地插入 R 友好分隔符。