我在Windows上运行R,在Desktop上有一个csv文件。我像这样加载它,
x<-read.csv("C:UserssurfcatDesktop2006_dissimilarity.csv",header=TRUE)
但是R给出以下错误信息
错误:'U'在以"C: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:nn")
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,它允许自定义热键:
- 定义一个热键,例如容器 - 转变 - V
- 为它分配一个过程,该过程将剪贴板中的反斜杠替换为slaches……
- 当你想复制粘贴路径到R时,你可以使用Cntr-Shift-V而不是Cntr-V
- 果不其然
自动热键代码片段(链接到主页)
^+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友好的分隔符。
用正斜杠代替反斜杠
我知道这真的很老,但如果你要复制和粘贴,你可以使用:
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()
用正斜杠代替反斜杠对我在Windows上很有效。
对于包含文本挖掘数据的txt文件(speech, newsletter等),最好的处理方法是将""替换为"/"。
的例子:
file<-Corpus(DirSource("C:/Users/PRATEEK/Desktop/training tool/Text Analytics/text_file_main"))
我认为R正在读取字符串中的''作为转义字符。例如,n在字符串中创建一个新行,t在字符串中创建一个新选项卡。
''可以工作,因为R会将其识别为普通的反斜杠。
readClipboard()
也可以直接工作。将路径复制到剪贴板
C:UserssurfcatDesktop2006_dissimilarity.csv
然后readClipboard()
显示为
[1] "C:\Users\surfcat\Desktop\2006_dissimilarity.csv"
一个简单的方法是使用python。python终端类型
r"C: 用户桌面 surfcat 2006 _dissimilarity.csv"你会回来的"C: 用户桌面 surfcat 2006 _dissimilarity.csv