Ошибка пути к файлу в 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"