Ошибка пути к файлу в R при использовании Windows (ошибка "шестнадцатеричные цифры в строке символов")

Я запускаю R в Windows, и на рабочем столе есть CSV-файл. Я загружаю это следующим образом,

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

но R дает следующее сообщение об ошибке

Ошибка: "\U" используется без шестнадцатеричных цифр в символьной строке, начинающейся с "C:\U"

Итак, как правильно загрузить этот файл. Я использую Vista

10 ответов

Решение

Заменить все \ с \\,

он пытается избежать следующего символа в этом случае 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, потому что "\" имеет особое значение - используется как escape-символ, чтобы придать следующим символам особое значение (\n для новой строки, \t для вкладки, \r для возврата каретки,..., посмотрите здесь).

Потому что R не знает последовательность \U это жалуется. Просто замените "\" с "/" или используйте дополнительный "\" чтобы избежать "\" из его особого значения и все работает гладко.

альтернатива

На Windows, я думаю, что лучшее, что нужно сделать для улучшения вашего рабочего процесса с путями, специфичными для Windows в R, это использовать, например, AutoHotkey, который допускает использование пользовательских горячих клавиш:

  • определить горячую клавишу, например, Cntr-Shift-V
  • назначает ему процедуру, которая заменяет обратную косую черту в вашем буфере обмена на slaches...
  • когда вы хотите скопировать и вставить путь в R, вы можете использовать Cntr-Shift-V вместо Cntr-V
  • И вуаля

Фрагмент кода AutoHotkey (ссылка на домашнюю страницу)

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

Мое решение состоит в том, чтобы определить фрагмент RStudio следующим образом:

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

Этот фрагмент преобразовывает обратные слеши \ в двойную обратную косую черту \\, Следующая версия будет работать, если вы предпочитаете конвертировать обратные слэши в прямые. /,

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

Как только ваш предпочтительный фрагмент определен, вставьте путь из буфера обмена, набрав p-p-TAB-ENTER (то есть pp, затем нажмите клавишу табуляции и затем введите), и путь будет волшебным образом вставлен с 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

Замена обратной косой черты на прямую косую черту работала у меня в Windows.

Лучший способ справиться с этим в случае txt-файла, который содержит данные для интеллектуального анализа текста (речь, новостная рассылка и т. Д.), Это заменить "\" на "/".

Пример:

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

Я думаю, что R читает '\' в строке как escape-символ. Например, \n создает новую строку в строке, \t создает новую вкладку в строке.

'\' будет работать, потому что R распознает это как нормальную обратную косую черту.

readClipboard() работает напрямую тоже. Скопируйте путь в буфер обмена

C:\Users\surfcat\Desktop\2006_dissimilarity.csv

затем

readClipboard()

отображается как

[1] "C:\\Users\\surfcat\\Desktop\\2006_dissimilarity.csv"

Простой способ - использовать Python. в терминальном питоне

r"C:\Users\surfcat\Desktop\2006_dissimility.csv", и вы получите "C: \ Users \ surfcat \ Desktop \ 2006_dissimility.csv"

Другие вопросы по тегам