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

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

Читая это предыдущий вопрос о переполнении стека вместе с этот предыдущий вопрос заставляет меня думать, что я могу сделать это:

START "" "C:\Program Files (x86)\R\R-2.8.1\bin\R" CMD BATCH "C:\Users\jd\Documents\mexico\Estado\getdata1.r" /b

Это не возвращает ошибку, а просто возвращает приглашение, и R никогда не запускается. Что мне не хватает?


person JD Long    schedule 27.07.2009    source источник
comment
Является ли / b параметром команды СТАРТ? Я думаю, это передается программе R. Попробуйте изменить его на START / b .... но я не уверен, что это действительно объясняет проблему (R никогда не запускается).   -  person ars    schedule 27.07.2009
comment
Ты решил это, @JD?   -  person Roman Luštrik    schedule 16.07.2011
comment
@Roman, я закончил разработку Segue :) Если бы я попытался решить ту же проблему сегодня, я бы использовал Multicore или doRedis.   -  person JD Long    schedule 18.07.2011


Ответы (3)


Простой ответ. В Windows при запуске команды используйте «Rcmd», а не «R CMD». Для запуска команд есть отдельный exe. Загляните в папку bin вашей установки R.

person Andrew Redd    schedule 06.08.2010
comment
но снег, безусловно, более изощренный способ распараллелить работу. - person Andrew Redd; 06.08.2010
comment
да, снег более сложен ... и с этой изысканностью приходит много накладных расходов - person JD Long; 06.08.2010

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

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

  2. Переключитесь на использование Rscript.exe вместо использования «R CMD BATCH». В Linux / OS X вы также можете использовать меньшее

Тем не менее, я выполняю почти все свои задания в Linux, поэтому здесь тоже может быть ответ для Windows, которого я просто не знаю. Но приведенное выше является общим и соответствует платформенно-независимому духу Р.

person Dirk Eddelbuettel    schedule 27.07.2009
comment
Хорошо, это имеет смысл. Мне нужно сломаться и потратить день на размышления о снеге и MPI. За параллельным процессом, безусловно, будущее, но я не спешил с ускорением. - person JD Long; 27.07.2009
comment
И что приятно, вы можете поэкспериментировать со снегом, используя только сетевые сокеты на локальном компьютере, прежде чем переходить к MPI. Тем не менее, девять заданий на одной машине в любом случае могут исчерпать вашу память. - person Dirk Eddelbuettel; 27.07.2009

Из других ответов не сразу было ясно, как на самом деле сделать эту работу (не прибегая к альтернативам параллельной обработки, поэтому вот решение, которое я нашел, которое очень просто работает в 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
person Lucas Fortini    schedule 05.04.2013