我正在尝试在 Windows shell 中运行以下 R 脚本:
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]
还指出:
表达式和文件中允许有空格(但需要保护它不受正在使用的 shell 的影响,如果有的话,例如通过将参数括在引号中)。
但是,尝试将文件路径括在引号中会导致错误
The filename, directory name, or volume label syntax is incorrect.
为避免混淆 , 正在运行
Rscript C:/Documents/Folder_name/myscript.txt
当路径不包含任何空格时工作正常 Rscript "C:/Documents/Folder_name/myscript.txt"
.
最佳答案
这是 R 版本 3.5.0 for Windows 中的一个 BUG。
除了降级之外,一种解决方法是创建一个路径中没有空格的 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
更新
自 3.5.1 以来,该问题已得到修复。
关于带空格的 Rscript 文件路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48544345/