Arhn - архитектура программирования

Проблемы при вызове системной команды в RStudio

Я пытаюсь запустить файл 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, но опять же безуспешно.

16.05.2020

Ответы:


1

Это поможет:

# List all directory paths. These are the directories where data are stored.
all_dir = dir(here::here('data', 'executed_data'), full.names = TRUE)

# Function to process all your data. Note the arg "wd"
process_data = function (data_dir) {
    processx::run(here::here('files', 'prog.exe'), wd = data_dir)
}

# Iterate over all directories
purrr::map(.x = all_dir, .f = process_data)

Важно, чтобы .Rproj находился на том же уровне, что и каталоги scripts, files, data.

18.05.2020
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..