Путь к файлу Rscript с пробелом
Я пытаюсь запустить следующий сценарий R в оболочке Windows:
Rscript C:/Documents/Folder name containing space/myscript.txt
В этом случае я получаю ошибку:
Fatal error: cannot open file 'C:/Documents/Folder': No such file or directory
Однако, когда я использую кавычки (пробовал одинарные двойные и тройные, как было предложено в других сообщениях), я получаю следующую ошибку:
Rscript "C:/Documents/Folder name containing space/myscript.txt"
The filename, directory name, or volume label syntax is incorrect.
Я не могу найти способ обойти проблему с пространством и изменить местоположение файла, чтобы не было пробелов, это не вариант для меня.
Любая помощь будет принята с благодарностью.
Дальнейшие разъяснения:
Проблема, с которой я сталкиваюсь, не связана напрямую с R, а связана с тем, что путь к файлу, содержащий пробелы, передается в Rscript.
В документации Rsript должен использоваться следующим образом:
Rscript [options] [-e expr [-e expr2 ...] | file] [args]
Также отмечено, что:
В выражениях и файлах допускаются пробелы (но их необходимо защищать от используемой оболочки, если таковые имеются, например, заключая аргумент в кавычки).
Однако попытка заключить путь к файлу в кавычки приводит к ошибке
The filename, directory name, or volume label syntax is incorrect.
Чтобы избежать путаницы, бег Rscript C:/Documents/Folder_name/myscript.txt
работает нормально, когда путь не содержит пробелов, как это делает Rscript "C:/Documents/Folder_name/myscript.txt"
,
3 ответа
Это ошибка R версии 3.5.0 для Windows.
Одним из обходных путей, кроме понижения версии, является создание сценария R без пробелов в пути и выполнение разнесенного сценария с source()
:
## C:\Documents\Folder-name-no-space\myscript.txt
source("C:/Documents/Folder name containing space/myscript.txt")
Затем вы запускаете это с:
Rscript C:\Documents\Folder-name-no-space\myscript.txt
или также:
Rscript C:/Documents/Folder-name-no-space/myscript.txt
Вы также можете попробовать 8.3 имя файла. Вы можете получить это с:
for %I in ("C:/Documents/Folder name containing space/myscript.txt") do @echo %~sI
Прямая косая черта прекрасно работает с R, поэтому не беспокойтесь о обратных косых чертах. Я только что проверил и на терминале CMD.exe Windows 8.1 работает следующее:
C:\Windows\System32> Rscript "C:/Users/hb/folder with spaces/script.R"
[1] "1+2+3"
C:\Windows\System32>
Мое лучшее предположение, что у вас неверный путь. Если это несуществующее имя пути, вы получите:
C:\Windows\System32> Rscript --vanilla "C:/Users/hb/folder with spaces/non-existing.R"
Fatal error: cannot open file 'C:/Users/hb/folder with spaces/non-existing.R': No such file or directory
Вы можете проверить это изнутри R, например,
> file.exists("C:/Users/hb/folder with spaces/script.R")
[1] TRUE
Простое решение: установить более новую версию R.
В примечаниях к выпуску версии 3.5.1 соответствующее исправление ошибки описано здесь:
Разрешить файловому аргументу Rscript включать пробел, даже если он находится в командной строке первым.
Другой удобный обходной путь - создание псевдонима для части пути, содержащей пробелы, а именно:
SUBST k: "c:\Folder with Spaces"
rscript k:\scripts\program.R