Проблемы с запуском командного файла из R
Я создаю функцию в R, и на одном шаге функции я запускаю командный файл, этот пакетный файл, в свою очередь, запускает другую программу, которая создает файлы, которые я затем хочу прочитать в своей функции.
Я использую shell.exec для запуска пакетного файла, и он работает нормально, проблема в том, что следующая строка моего кода, который хочет прочитать в выводе из программы, запускаемой пакетным файлом, вылетает, потому что он еще не был создан,
Поэтому я получаю сообщение об ошибке при первом вызове своей функции, но если я просто вызываю ее снова, она работает нормально. Пример кода ниже: в основном, что происходит, я получаю сообщение об ошибке при вызове функции, говорящее, что... / bat_output.txt не существует, потому что пакетный файл еще не был запущен, но потом, когда я снова вызываю функцию работает нормально.
shell.exec("run.bat")
readout<-read.table("bat_output.txt")
Какие-либо предложения?
1 ответ
shell.exec
немедленно возвращается, когда скрипт работает в фоновом режиме. Причина bat_output.txt
не найдено в первый раз, вероятно, что сценарий еще не закончен. shell.exec
не дает вам возможности ждать или какой-либо информации, чтобы определить, запущен ли еще процесс, так что это может быть не лучшим инструментом для этого.
Альтернативы:
system("cmd /c run.bat")
system2("cmd", c("/c", "run.bat"))
Поймите, что если вы ссылаетесь на другой путь, вы можете / должны normalizePath
и / или dQuote
это входит в эти команды. (R-х system*
Команды плохо при формировании аргументов.)