Подтвердить что ты не робот

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

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

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

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

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

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

4b9b3361

Ответ 1

замените все \ на \\.

он пытается избежать следующего символа в этом случае U, поэтому для вставки \ вам нужно вставить escape-код \, который равен \\

Ответ 2

Пожалуйста, не отмечайте этот ответ так же корректно, как smitec уже правильно ответил. Я включаю функцию удобства, которую я храню в своей .First библиотеке, которая преобразует путь Windows в формат, который работает в R (методы, описанные Sacha Epskamp). Просто скопируйте путь в буфер обмена (ctrl + c), а затем запустите функцию как pathPrep(). Нет необходимости в аргументе. Путь печатается на консоль правильно и записывается в буфер обмена для удобства вставки в script. Надеюсь, что это будет полезно.

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)
}

Ответ 3

Решение

Попробуйте следующее: x <- read.csv("C:/Users/surfcat/Desktop/2006_dissimilarity.csv", header=TRUE)

Объяснение

R не может правильно понять нормальные пути Windows, потому что "\" имеет особый смысл - он используется как escape-символ, чтобы придать следующие символы особым значениям (\nдля новой строки, \t для вкладки, \r для возврата каретки,..., смотрите здесь).

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

Alternative

В окнах я считаю, что лучше всего улучшить рабочий процесс с помощью конкретных путей Windows в R, чтобы использовать, например. AutoHotkey, который позволяет настраивать горячие клавиши:

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

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

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

Ответ 4

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

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

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

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

Как только ваш предпочтительный фрагмент определен, вставьте путь из буфера обмена, набрав p - p - TAB - ENTER (это pp, а затем клавиша табуляции, а затем введите), и путь будет волшебным образом вставлен с R дружественными разделителями.

Ответ 5

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

Пример:

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

Ответ 6

Заменить обратные косые черты\с помощью косых черт/при работе с машиной для окон

Ответ 7

Я знаю, что это действительно старо, но если вы все равно копируете и вставляете, вы можете просто использовать:

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()

Ответ 8

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

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

Ответ 9

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

Ответ 10

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

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

затем

readClipboard()

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

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

Ответ 11

Простым способом является использование python. в терминальном терминале python

г "C:\Users\surfcat\Desktop\2006_dissimilarity.csv" и вы вернетесь 'C:\Users\surfcat\Desktop\2006_dissimilarity.csv