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,它允许自定义热键:
- 定义一个热键,例如Cntr – Shift – V
- 指定一个程序,用slachesreplace剪贴板中的反斜杠…
- 当你想复制粘贴path到R你可以使用Cntr – Shift – V而不是Cntr – V
- ET-瞧
AutoHotkey代码片段 (链接到主页)
^+v:: StringReplace, clipboard, clipboard, \, /, All SendInput, %clipboard%
我的解决scheme是定义一个RStudio片段如下:
snippet pp "`r gsub("\\\\", "\\\\\\\\\\\\\\\\", readClipboard())`"
这段代码将反斜杠\
转换成双反斜杠\\
。 如果您希望将反斜杠转换为正斜杠/
,以下版本将起作用。
snippet pp "`r gsub("\\\\", "/", readClipboard())`"
一旦你的首选片段被定义,通过inputp – p – TAB – ENTER (即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'