Проблемы с запуском командного файла из R - PullRequest
0 голосов
/ 03 октября 2018

Я создаю функцию в R, и за один шаг функции я запускаю командный файл, этот пакетный файл, в свою очередь, запускает другую программу, которая создает файлы, которые я затем хочу прочитать в своей функции.

Я использую shell.exec для запуска пакетного файла, и он работает нормально, проблема в том, что следующая строка моего кода, который хочет прочитать в выводе из программы, запускаемой пакетным файлом, вылетает, потому что он не был созданеще.

Таким образом, я получаю сообщение об ошибке при первом вызове своей функции, но если я просто вызываю ее снова, она работает нормально.Пример кода ниже: в основном, что происходит, я получаю сообщение об ошибке при вызове функции, говорящее, что ... / bat_output.txt не существует, потому что пакетный файл еще не был запущен, но потом, когда я снова вызываю функцию, работает нормально.

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

Есть предложения?

1 Ответ

0 голосов
/ 03 октября 2018

shell.exec немедленно возвращается, когда скрипт работает в фоновом режиме.Причина bat_output.txt не найдена в первый раз, вероятно, сценарий еще не завершен.shell.exec не дает вам возможности ждать или какой-либо информации, чтобы определить, запущен ли еще процесс, поэтому он может быть не лучшим инструментом для этого.

Альтернативы:

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

Поймите, что если вы ссылаетесь на другой путь, вам может понадобиться / нужно normalizePath и / или dQuote, что входит в эти команды.(Команды R system* плохи при формировании аргумента.)

...