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

时间:2011-12-08 02:30:29

标签: r filepath backslash path-separator

我在Windows上运行R,并在桌面上有一个csv文件。我按如下方式加载它,

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

但R给出以下错误消息

  

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

那么加载此文件的正确方法是什么。我正在使用Vista

11 个答案:

答案 0 :(得分:115)

将所有\替换为\\

它正试图逃避U的下一个字符,因此要插入\,您需要插入一个\的转义\\

答案 1 :(得分: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)
}

答案 2 :(得分:8)

<强>解决方案

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

<强>解释

R无法正确理解正常的Windows路径,因为"\"具有特殊含义 - 它用作转义字符,为后续字符赋予特殊含义(\n换行,\t对于制表符,\r表示回车,...,have a look here)。

因为R不知道它抱怨的序列\U。只需将"\"替换为"/"或使用额外的"\"即可使"\"脱离其特殊含义,一切顺利。

<强>替代

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

  • 定义一个热键,例如 CNTR - - V
  • 为其指定一个替换剪贴板中反斜杠的过程 slaches ......
  • 当您想要将路径粘贴到R中时,您可以使用 Cntr - Shift - V 而不是 Cntr < / KBD> - V
  • Et一瞧

AutoHotkey代码段 (link to homepage)

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

答案 3 :(得分:4)

My Solution用于定义RStudio snippet,如下所示:

PreparedStatement ps = connection.prepareStatement(sql);
ps.setString(`INPUT PARAMETER`);

此代码段将反斜杠snippet pp "`r gsub("\\\\", "\\\\\\\\\\\\\\\\", readClipboard())`" 转换为双反斜杠\。如果您希望将反斜杠转换为正斜杠\\,则可以使用以下版本。

/

定义首选代码段后,键入 p - p - TAB - ENTER <从剪贴板粘贴路径/ kbd>(即pp然后是tab键然后输入),路径将被神奇地插入R友好分隔符。

答案 4 :(得分:1)

在包含文本挖掘(语音,简报等)数据的txt文件的情况下处理此问题的最佳方法是替换&#34; \&#34;用&#34; /&#34;。

示例:

file<-Corpus(DirSource("C:/Users/PRATEEK/Desktop/training tool/Text Analytics/text_file_main"))

答案 5 :(得分:1)

在运行Windows机器时用正斜杠替换反斜杠\

答案 6 :(得分:1)

我知道这确实很老,但是如果您仍然要复制和粘贴,则可以使用:

read.csv(readClipboard())

readClipboard()为您转义反斜杠。只要记住确保副本中包含“ .csv”即可,也许与此:

read.csv(paste0(readClipboard(),'.csv'))

如果您真的想最小化键入,可以使用一些功能:

setWD <- function(){
  setwd(readClipboard())
}


readCSV <- function(){
  return(readr::read_csv(paste0(readClipboard(),'.csv')))
} 

#copy directory path
setWD()

#copy file name
df <- readCSV()

答案 7 :(得分:0)

我认为R正在阅读&#39; \&#39;在字符串中作为转义字符。例如\ n在字符串中创建一个新行,\ t在字符串中创建一个新选项卡。

&#39; \&#39;因为R会认为这是一个正常的反斜杠,所以会有效。

答案 8 :(得分:0)

用正斜杠代替反斜杠在Windows上对我来说很有效。

答案 9 :(得分:0)

readClipboard()也可以直接使用。将路径复制到剪贴板中

C:\Users\surfcat\Desktop\2006_dissimilarity.csv

然后

readClipboard()

显示为

[1] "C:\\Users\\surfcat\\Desktop\\2006_dissimilarity.csv"

答案 10 :(得分:-3)

一种简单的方法是使用python。 在python终端类型

  

R “C:\用户\ surfcat \桌面\ 2006_dissimilarity.csv”   你会回来的   'C:\用户\ surfcat \桌面\ 2006_dissimilarity.csv'