Получение Windows для запуска R в пакетном режиме с помощью команды «Пуск»
-
19-09-2019 - |
Вопрос
Я знаю, что, должно быть, делаю простую синтаксическую ошибку, но я хочу иметь пакетный файл Windows, который запускает 9 экземпляров R и запускает в каждом из них разные процедуры.Я хочу, чтобы они работали одновременно (т.е.асинхронно).Я могу запустить 9 окон командной строки и ввести команду в каждом, но кажется, что с помощью команды START я смогу заставить их запускаться из одного командного файла.
Вот пример того, как я запускаю один из экземпляров R:
"C:\Program Files (x86)\R\R-2.8.1\bin\R" CMD BATCH "C:\Users\jd\Documents\mexico\Estado\getdata1.r"
Читая это предыдущий вопрос о stackoverflow вместе с этот предыдущий вопрос заставляет меня думать, что я должен быть в состоянии сделать это:
START "" "C:\Program Files (x86)\R\R-2.8.1\bin\R" CMD BATCH "C:\Users\jd\Documents\mexico\Estado\getdata1.r" /b
Это не возвращает ошибку, а просто возвращает приглашение, и R никогда не запускается.Что мне не хватает?
Решение
Простой ответ.В Windows при запуске команды используйте «Rcmd», а не «R CMD».Для запуска команд существует отдельный exe.Посмотрите в папке bin вашей установки R.
Другие советы
Я бы сделал две вещи по-другому:
Используйте сам R для распределения девяти различных заданий;тот снег Пакет очень хорош в этом, даже если не использовать MPI/PVM/NWS для распределенной работы.Некоторые примеры использования снега приведены, например, в моих учебных пособиях «Введение в высокопроизводительные вычисления с использованием R», ссылки на которые приведены на сайте. эта страница.Со Snow вы получаете «параллельные» версии функций применения, которые можно запускать на нескольких экземплярах R, работающих на локальном компьютере (или, конечно, в сети компьютеров, если таковая имеется).Список r-sig-hpc поможет ответить на более подробные вопросы.
Переключитесь на использование Rscript.exe вместо «R CMD BATCH».В Linux/OS X вы также можете использовать lesser.
Тем не менее, я выполняю почти все свои задания в Linux, поэтому здесь может быть ответ, специфичный для Windows, которого я просто не знаю.Но вышеизложенное носит общий характер и соответствует платформенно-независимому духу R.
Из других ответов не было сразу понятно, как на самом деле заставить эту работу работать (не прибегая к альтернативам параллельной обработки, поэтому я нашел решение, которое очень просто работает в Windows.
Если у вас есть простой файл r:
for(i in 1:10){
ptm0 <- proc.time()
Sys.sleep(0.5)
ptm1=proc.time() - ptm0
jnk=as.numeric(ptm1[3])
cat('\n','It took ', jnk, "seconds to do iteration", i)
}
В CMD укажите каталог, в котором находится ваш скрипт, а затем откройте новое окно с Rscript для запуска вашего кода.Несколько строк откроют несколько экземпляров r, которые запускают ваш код и воспроизводят сообщения, выводимые кодом.
cd "C:\rcode"
START "" Rscript example_code.r /b
START "" Rscript example_code.r /b
Если Rscript отсутствует в системном пути, просто укажите вместо этого полный путь:
START "" "C:\Program Files\R\bin\x64\Rscript.exe" text_within_loop.r /b