【问题标题】:Spaces in paths in batch mode R批处理模式R中的路径中的空格
【发布时间】:2019-07-15 15:50:47
【问题描述】:

我正在尝试从批处理文件中运行一个 R 脚本,这样它对于其他用户来说可以很好而且干净。目前,您将 CSV 文件拖放到批处理文件中,然后它将文件名传递给 R 脚本以供输入。

当文件路径/名称中有空格时,它在 RStudio 中可以正常工作,但是当我从批处理文件中调用它时会出现问题。当我这样做时,它会尝试在空格之前打开路径。

我尝试通过使用shortPathName(inputPath) 并用“\”替换空格从 R 中重新格式化文件路径,但它似乎不起作用。

目前,脚本已启动

    "%~dp0\R-3.6.0\bin\R.exe" CMD BATCH "--args %~1" "%~dp0\Script.R"

脚本包含

    args <- commandArgs(TRUE)
    inputPath <- args[1]
    inputPath <- shortPathName(inputPath)
    inputData <- read.csv(inputPath)

它在 RStudio 中运行良好,但在从批处理启动时崩溃,并在输出文件中生成此错误消息:

文件错误(文件,“rt”):无法打开连接
调用:read.csv -> read.table -> 文件
另外:警告信息:
在文件中(文件,“rt”):
无法打开文件“到空间的文件路径”:没有这样的文件或目录
执行停止

【问题讨论】:

    标签: r batch-file


    【解决方案1】:

    绝不是 R 专家,但我会尝试

    %~dp0\R-3.6.0\bin\R.exe" CMD BATCH "--args %~s1" "%~dp0\Script.R"
    

    %~s1 应提供短文件名作为参数。

    【讨论】:

    • 啊,是的,谢谢,非常接近!原来是我放置“”导致批处理文件出现空格问题。我认为将它们放在整个 --args 周围就可以了,但事实并非如此。
    【解决方案2】:

    在尝试了批处理文件的几种配方并进行了一些调试后,我发现批处理文件将空格之前的文件的第一部分作为第一个参数传递。

    发现在CMD BATCH模式下使用R不再可取所以切换到使用Rscript模式作为运行

        "%~dp0\R-3.6.0\bin\Rscript.exe" --vanilla "%~dp0\Script.R" "%~1"
    

    这允许使用“”将参数传递给 R,因此也可以使用空格。 从 v3.5.1 开始,R 接受带有空格的文件路径。

    【讨论】:

      猜你喜欢
      • 2014-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-16
      • 1970-01-01
      • 2012-08-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多