Я пытаюсь запустить файл exe
, вызвав системную команду через IDE RStudio R. Моя ОС Windows.
У меня есть следующая иерархия для каталогов:
|_scripts
|_files
|_prog.exe
|_data
|_executed_data
|_case1
|_case2
Мой файл exe
хранится в каталоге files
. Обработанные, готовые к использованию данные хранятся в определенных каталогах case#
, где # представляет соответствующий номер для этого случая.
Код является модульным. Я пишу функции, а затем использую purrr::map
для итерации этой функции по вектору той же длины, что и количество наблюдений.
Вот как выглядит код:
#Library(processx)
#Library(purrr)
run_exe = function(directory) {
# Copy .exe file to folder to run
from_dir = c("../files/prog.exe")
to_dir = paste0("../data/executed_data/", directory)
file.copy(from = from_dir, to = to_dir, overwrite = T)
# Run .exe file
processx::run( command = paste0("../data/executed_data/",directory,"/prog.exe" )
}
# Run function over all cases
all_cases = list.files("../data/executed_data")
purrr::map(all_cases, run_exe)
Попытка запуска с map
не удалась, и на консоль выводится сообщение об ошибке. В распечатанном сообщении говорится, что одна из подпрограмм файла exe
не может найти определенный файл, следовательно, ошибка.
Я заметил, что имя предполагаемого отсутствующего файла напечатано строчными буквами, поэтому я переименовал файл, чтобы все буквы были маленькими. Тем не менее, это не сработало.
В сообщении также говорится, что файл error.err
был напечатан. Этот файл печатается, когда происходит ошибка, однако, если я перейду непосредственно в один из каталогов cases#
и дважды щелкну файл exe
, он запустится без проблем. Поскольку он работает без проблем, я знаю, что нет пропавших файлов.
Учитывая, что этот вопрос касается запуска файла exe
, я не думал, что воспроизводимый пример будет возможен. Однако, если у вас возникали подобные проблемы при попытке вызвать системную функцию, поделитесь найденным решением.
P.S.: Прежде чем использовать processx::run, я поигрался с функциями system
, system2
и sys
, но опять же безуспешно.