Необработанные текстовые строки для путей к файлам в R

Можно ли использовать префикс при указании строки пути к файлу в R, чтобы игнорировать escape-символы?

Например, если я хочу прочитать файл example.csv при использовании Windows, мне нужно вручную изменить \ на / или \\ . Например,

'E:\DATA\example.csv'

становится

'E:/DATA/example.csv'

data <- read.csv('E:/DATA/example.csv')

В python я могу префикс моей строки, используя r , чтобы этого не делать (например, r'E: \ DATA \ example.csv '). Есть ли аналогичная команда в R или подход, который я могу использовать, чтобы избежать этой проблемы. (Я перемещаюсь между Windows, Mac и Linux - очевидно, это проблема только в ОС Windows).

29
задан pnuts 21 September 2015 в 03:39
поделиться

2 ответа

Вы можете использовать file.path для создания правильного пути к файлу, независимо от операционной системы.

file.path("E:", "DATA", "example.csv")
[1] "E:/DATA/example.csv"

Также возможно преобразовать путь к файлу в каноническую форму для вашей операционной системы, используя normalizePath:

zz <- file.path("E:", "DATA", "example.csv")
normalizePath(zz)
[1] "E:\\DATA\\example.csv"

Но в качестве прямого ответа на ваш вопрос: I я не знаю, как игнорировать escape-последовательность, используя R. Другими словами, я не верю, что можно скопировать путь к файлу из Windows и вставить его непосредственно в R.

Однако, если вы действительно ищете способ скопировать и вставить из буфера обмена Windows и получить правильную строку R, попробуйте readClipboard

Например, если я копирую путь к файлу из Windows Проводник, затем запустите следующий код, я получу правильный путь к файлу:

zz <- readClipboard()
zz
[1] "C:\\Users\\Andrie\\R\\win-library\\"
38
ответ дан 28 November 2019 в 01:27
поделиться

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

pathPrep <- function() {                        
    cat("Please enter the path:\\n\\n")         
    oldstring <- readline()                     
    chartr("\\\\", "/", oldstring)              
}                                               

Давайте попробуем!

При появлении запроса вставьте путь в консоль или используйте ctrl + r для всего сразу

(x <- pathPrep())                      
C:/Users/Me/Desktop/SomeFolder/example.csv      

Теперь вы можете передать его функции

shell.exec(x) #this piece would work only if    
              #  this file really exists in the 
              #  location specified  

Но, как отмечали другие, то, что вы хотите, на самом деле невозможно.

4
ответ дан 28 November 2019 в 01:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: