r - 从 R 执行批处理文件的问题
问题描述
我在 R 中创建一个函数,在函数的一个步骤中我运行一个批处理文件,这个批处理文件又运行一个不同的程序,它创建了我想要在我的函数中读取的文件。
我正在使用 shell.exec 运行批处理文件并且它运行良好,问题是我的代码的下一行想要读取批处理文件运行的程序的输出,因为它尚未创建.
所以我第一次调用我的函数时遇到错误,但如果我再次调用它,它运行正常。下面的代码示例:基本上发生的情况是我在调用函数时收到一条错误消息,说 .../bat_output.txt 不存在,因为尚未运行批处理文件,但是当我再次调用该函数时,它工作正常。
shell.exec("run.bat")
readout<-read.table("bat_output.txt")
有什么建议么?
解决方案
shell.exec
当脚本在后台运行时立即返回。第一次找不到原因bat_output.txt
很可能是脚本还没写完。shell.exec
不给你等待的能力或任何信息来确定进程是否仍在运行,所以它可能不是最好的工具。
备择方案:
system("cmd /c run.bat")
system2("cmd", c("/c", "run.bat"))
意识到如果您引用不同的路径,您可能希望/需要normalizePath
和/或dQuote
它进入这些命令。(R 的system*
命令不擅长形成参数。)
推荐阅读
- c++ - 保存json文件后如何返回文件路径?
- sql-server - 从每小时获取每日数据
- amazon-web-services - 索引版本(历史)数据
- ruby-on-rails - Ransack 搜索来自不同控制器的模型属性
- python - 如何使用 python 或 curl 下载 pdf?
- python - 将列比例转换为 1 到 10 的范围
- javascript - Document.execCommand() 仅适用于开发人员工具
- corda - Corda Enterprise RPCClient - 找不到序列化
- terraform - Terraform 模块 - 计数 = 0 时的输出错误
- firebase - FCMResponse 正文成功不返回 1