Получение Windows для запуска R в пакетном режиме с помощью команды «Пуск»

StackOverflow https://stackoverflow.com/questions/1188544

Вопрос

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

Другие советы

Я бы сделал две вещи по-другому:

  1. Используйте сам R для распределения девяти различных заданий;тот снег Пакет очень хорош в этом, даже если не использовать MPI/PVM/NWS для распределенной работы.Некоторые примеры использования снега приведены, например, в моих учебных пособиях «Введение в высокопроизводительные вычисления с использованием R», ссылки на которые приведены на сайте. эта страница.Со Snow вы получаете «параллельные» версии функций применения, которые можно запускать на нескольких экземплярах R, работающих на локальном компьютере (или, конечно, в сети компьютеров, если таковая имеется).Список r-sig-hpc поможет ответить на более подробные вопросы.

  2. Переключитесь на использование 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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top