我在 Windows 上运行 R,并在桌面上有一个 csv 文件。我按如下方式加载它,
x<-read.csv("C:\Users\surfcat\Desktop\2006_dissimilarity.csv",header=TRUE)
但 R 给出以下错误信息
错误:在以“C:\U”开头的字符串中使用了没有十六进制数字的“\U”
那么加载这个文件的正确方法是什么。我正在使用 Vista
我在 Windows 上运行 R,并在桌面上有一个 csv 文件。我按如下方式加载它,
x<-read.csv("C:\Users\surfcat\Desktop\2006_dissimilarity.csv",header=TRUE)
但 R 给出以下错误信息
错误:在以“C:\U”开头的字符串中使用了没有十六进制数字的“\U”
那么加载这个文件的正确方法是什么。我正在使用 Vista
全部替换\
为\\
.
在这种情况下,它试图转义下一个字符,U
因此要插入一个\
您需要插入一个转义\
的字符\\
请不要将此回复标记为正确,因为 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)
}
解决方案
试试这个:x <- read.csv("C:/Users/surfcat/Desktop/2006_dissimilarity.csv", header=TRUE)
解释
R 无法正确理解正常的 Windows 路径,因为它"\"
具有特殊含义 - 它用作转义字符以赋予以下字符特殊含义(\n
对于换行符、\t
制表符、\r
回车符,...,看看这里)。
因为 R 不知道\U
它抱怨的序列。只需将其替换为"\"
或"/"
使用附加 "\"
项即可摆脱 "\"
其特殊含义,一切都会顺利进行。
选择
在 Windows 上,我认为使用 R 中的 Windows 特定路径改进工作流程的最佳方法是使用 AutoHotkey,它允许自定义热键:
AutoHotkey 代码片段 (链接到主页)
^+v::
StringReplace, clipboard, clipboard, \, /, All
SendInput, %clipboard%
我的解决方案是定义一个RStudio 片段,如下所示:
snippet pp
"`r gsub("\\\\", "\\\\\\\\\\\\\\\\", readClipboard())`"
此代码段将反斜杠转换\
为双反斜杠\\
。如果您希望将反斜杠转换为正斜杠,则以下版本将起作用/
。
snippet pp
"`r gsub("\\\\", "/", readClipboard())`"
一旦定义了您的首选片段,通过键入p- p- TAB-从剪贴板粘贴路径ENTER(即 pp,然后是 tab 键,然后输入),该路径将使用 R 友好的分隔符神奇地插入。
运行Windows机器时用正斜杠替换反斜杠\
在 Windows 上用正斜杠替换反斜杠对我有用。
如果 txt 文件包含用于文本挖掘的数据(语音、新闻通讯等),处理此问题的最佳方法是将“\”替换为“/”。
例子:
file<-Corpus(DirSource("C:/Users/PRATEEK/Desktop/training tool/Text Analytics/text_file_main"))
我知道这真的很旧,但如果你还是要复制和粘贴,你可以使用:
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()
我认为 R 正在读取字符串中的 '\' 作为转义字符。例如 \n 在字符串中创建一个新行,\t 在字符串中创建一个新选项卡。
'\' 会起作用,因为 R 会将其识别为正常的反斜杠。
readClipboard()
也可以直接工作。将路径复制到剪贴板
C:\Users\surfcat\Desktop\2006_dissimilarity.csv
然后
readClipboard()
显示为
[1] "C:\\Users\\surfcat\\Desktop\\2006_dissimilarity.csv"
一个简单的方法是使用python。在 python 终端类型中
r"C:\Users\surfcat\Desktop\2006_dissimilarity.csv" 你会得到 'C:\Users\surfcat\Desktop\2006_dissimilarity.csv'