Можно ли использовать префикс при указании строки пути к файлу в 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).
Вы можете использовать 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\\"
Немного другой подход, который я использую с пользовательской функцией, которая берет путь 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
Но, как отмечали другие, то, что вы хотите, на самом деле невозможно.