Windows下R v3.5.0 RC版本Rscript不支持文件名含空格问题求助
这个问题我之前也碰到过,R 3.5.0的RC版本确实存在命令行参数解析的小bug,导致带空格的文件名或路径无法被正确识别,给你几个实用的解决思路:
临时快速绕过:用Windows短路径替代
Windows自带短文件名(8.3格式)机制,能把带空格的路径转成无空格的短路径。你可以在命令行里进入目标文件所在目录,执行dir /x查看对应的短路径,比如WinEdt 10的短路径可能是WINEDT~1,之后用短路径执行命令:Rscript WINEDT~1\Exec\R\stangle.R这个方法能立刻解决当前的执行问题,适合应急使用。
调整引号嵌套方式
试试把带空格的文件名用单引号包裹,外层再套双引号(或者反过来),强制让Rscript正确解析参数:Rscript '"say hello.R"'这种嵌套引号的技巧在Windows命令行里经常能解决参数解析的空格问题。
升级到正式版是最彻底的方案
RC版本本来就是预发布的测试版本,这类明显的回归bug(毕竟3.4.4是正常的)通常会在正式发布前被修复。直接升级到R 3.5.0的正式版(或者更高版本),大概率这个问题就直接消失了,这也是最推荐的长期解决方法。指定Rscript的完整路径执行
有时候系统环境变量里的Rscript路径如果有冲突,也可能引发解析异常。你可以直接用R安装目录下的Rscript.exe完整路径来执行命令,记得把路径也用双引号包裹(因为R的安装路径通常在Program Files下,本身就带空格):"C:\Program Files\R\R-3.5.0\bin\Rscript.exe" "say hello.R"
小提示:如果是在WinEdt这类编辑器里配置R脚本执行,记得同步修改编辑器里的命令模板,比如把原来的
Rscript "%f"调整成上述的嵌套引号或者短路径形式,直到你升级到正式版为止。
内容的提问来源于stack exchange,提问作者Gilbert

