使用 Windows 的 R 中的文件路径问题("Hex digits in character string"错误)



我在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

相关内容

  • 没有找到相关文章

最新更新