从 R 执行批处理文件时出现问题

Problems executing a batch file from R

我在 R 中创建一个函数,在函数的一个步骤中我 运行 一个批处理文件,这个批处理文件又 运行 是一个不同的程序,它创建了我想要的文件读入我的函数。

我正在使用 shell.exec 到 运行 批处理文件,它 运行 没问题,问题是我的代码的下一行想要从批处理文件的程序 运行 崩溃了,因为它还没有被创建。

所以我第一次调用我的函数时遇到错误,但如果我再次调用它 运行 没问题。下面的代码示例:基本上发生的事情是我在调用函数时收到一条错误消息说 .../bat_output.txt 不存在,因为批处理文件还没有 运行,但是随后当我再次调用该函数时,它工作正常。

shell.exec("run.bat")
readout<-read.table("bat_output.txt")

有什么建议吗?

shell.exec returns 当脚本在后台 运行 时立即。第一次找不到 bat_output.txt 的原因很可能是脚本尚未完成。 shell.exec 不提供等待的能力或任何信息来确定进程是否仍在 运行,因此它可能不是最好的工具。

备选方案:

system("cmd /c run.bat")
system2("cmd", c("/c", "run.bat"))

请注意,如果您引用不同的路径,您可能 want/need 到 normalizePath and/or dQuote 它会进入这些命令。 (R 的 system* 命令在参数形成方面很糟糕。)