89

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

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

但 R 给出以下错误信息

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

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

4

11 回答 11

134

全部替换\\\.

在这种情况下,它试图转义下一个字符,U因此要插入一个\您需要插入一个转义\的字符\\

于 2011-12-08T02:32:48.007 回答
27

请不要将此回复标记为正确,因为 smitec 已经正确回答。我在我的 .First 库中包含了一个便利函数,它可以将 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)
}
于 2011-12-08T03:01:34.760 回答
11

解决方案

试试这个: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
  • 为其分配一个程序,用斜杠替换剪贴板中的反斜杠...
  • 当您想将路径复制粘贴到 R 时,您可以使用Cntr- Shift-V而不是Cntr-V
  • 等等

AutoHotkey 代码片段 (链接到主页)

^+v::
StringReplace, clipboard, clipboard, \, /, All 
SendInput, %clipboard% 
于 2013-01-15T10:02:41.497 回答
5

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

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

此代码段将反斜杠转换\为双反斜杠\\。如果您希望将反斜杠转换为正斜杠,则以下版本将起作用/

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

一旦定义了您的首选片段,通过键入p- p- TAB-从剪贴板粘贴路径ENTER(即 pp,然后是 tab 键,然后输入),该路径将使用 R 友好的分隔符神奇地插入。

于 2016-11-14T04:45:18.103 回答
3

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

于 2018-01-16T11:53:52.743 回答
2

在 Windows 上用正斜杠替换反斜杠对我有用。

于 2018-11-29T23:08:30.247 回答
1

如果 txt 文件包含用于文本挖掘的数据(语音、新闻通讯等),处理此问题的最佳方法是将“\”替换为“/”。

例子:

file<-Corpus(DirSource("C:/Users/PRATEEK/Desktop/training tool/Text Analytics/text_file_main"))
于 2017-11-12T17:34:26.520 回答
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()
于 2018-11-30T16:53:22.290 回答
0

我认为 R 正在读取字符串中的 '\' 作为转义字符。例如 \n 在字符串中创建一个新行,\t 在字符串中创建一个新选项卡。

'\' 会起作用,因为 R 会将其识别为正常的反斜杠。

于 2014-11-21T23:12:15.697 回答
0

readClipboard()也可以直接工作。将路径复制到剪贴板

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

然后

readClipboard()

显示为

[1] "C:\\Users\\surfcat\\Desktop\\2006_dissimilarity.csv"
于 2019-01-16T12:46:15.683 回答
-5

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

r"C:\Users\surfcat\Desktop\2006_dissimilarity.csv" 你会得到 'C:\Users\surfcat\Desktop\2006_dissimilarity.csv'

于 2015-06-02T05:43:50.017 回答