Путь к файлу 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
Другие вопросы по тегам