R中使用Windows的文件path问题(“string中的hex数字”错误)

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

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

但R给出了以下错误信息

错误:'\ U'在string中使用不含hex数字的string,从“C:\ U”

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

\\replace所有的\

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

请不要将此响应标记为正确,因为smitec已经正确回答了。 我包括一个便利函数,我保存在我的.First库中,可以将Windowspath转换为R中的格式(Sacha Epskamp描述的方法)。 只需将path复制到剪贴板(ctrl + c),然后作为pathPrep()运行该函数。 不需要论证。 该path正确地打印到您的控制台并写入您的剪贴板,以便轻松粘贴到脚本。 希望这是有帮助的。

 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无法正确理解正常的窗口path,因为"\"有特殊含义 – 它被用作转义字符给予以下字符特殊含义( \n换行符, \t换行符, \r回车符。 看看这里 )。

因为R不知道序列\U它抱怨。 只需用"/"replace"\" ,或者使用其他的"\"从其特殊含义中跳出"\" ,一切运行平稳。

替代

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

  • 定义一个热键,例如CntrShiftV
  • 指定一个程序,用slachesreplace剪贴板中的反斜杠…
  • 当你想复制粘贴path到R你可以使用CntrShiftV而不是CntrV
  • ET-瞧

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

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

我的解决scheme是定义一个RStudio片段如下:

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

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

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

一旦你的首选片段被定义,通过inputppTABENTER (即pp然后tab键然后input)从剪贴板中粘贴一个path,并且该path将被魔法插入R友好的分隔符。

我认为R正在读取string中的'\'作为转义字符。 例如\ n在一个string内创build一个新的行,\ t在string内创build一个新的标签。

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

在包含文本挖掘(语音,简报等)数据的txt文件的情况下,处理这种情况的最好方法是用“/”replace“\”。

例:

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

一个简单的方法是使用python。 在Pythonterminaltypes

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

Interesting Posts