الحصول على Windows لبدء تشغيل R في وضع الدفعات باستخدام أمر البداية

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

سؤال

أعلم أنني يجب أن أقوم بخطأ بناء الجملة بسيطة، لكنني أريد أن أحصل على ملف دفعي ل Windows يطلق 9 مثيلات من ص ويعمل روتينا مختلفا في كل واحد. أريد أن تعمل هذه في وقت واحد (أي غير متزامن). يمكنني إطلاق النار على نظام Windows موجه الأوامر واكتب أمرا في كل واحد، ولكن يبدو وكأنه مع الأمر البدء الذي يجب أن أكون قادرا على بدء تشغيله من ملف دفعي واحد.

إليك مثال على الطريقة التي أبدأ فيها أحد مثيلات 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 منفصلة لتشغيل الأوامر. إلقاء نظرة على مجلد بن التثبيت الخاص بك.

نصائح أخرى

سأفعل شيئين بشكل مختلف:

  1. استخدم R نفسه لإرسال تسعة وظائف مختلفة؛ ال ثلج الحزمة جيدة جدا في هذا حتى عندما لا تستخدم MPI / PVM / NWS للعمل الموزع. بعض الأمثلة لاستخدام الثلوج هي على سبيل المثال في "مقدمة إلى الحوسبة عالية الأداء مع برامج تعليمية ص مرتبطة هذه الصفحة. وبعد مع Snow، تحصل على إصدارات "متوازية" من وظائف تطبيقات يمكنك تشغيل مثيلات متعددة من R قيد التشغيل على الكمبيوتر المحلي (أو بالطبع شبكة من أجهزة الكمبيوتر إذا كان لديك واحدة). قائمة R-Sig-HPC مفيدة لمزيد من الأسئلة التفصيلية.

  2. قم بالتبديل إلى استخدام rscript.exe بدلا من استخدام "R CMD Batch". على Linux / OS X، يمكنك أيضا الحصول على خيار لاستخدام Littler

ومع ذلك، أركض جميع وظائفي تقريبا على Linux، لذلك قد يكون هناك إجابة خاصة ب Windows هنا أيضا لا أعرف فقط. ولكن ما سبق عام ويبقى في روح منصة-اللاوردية من R.

لم يكن واضحا على الفور من الإجابات الأخرى كيفية عمل هذا العمل فعليا (دون اللجوء إلى بدائل المعالجة الموازية، لذلك هنا هو الحل الذي وجدته أن يعمل ببساطة على Windows

إذا كان لديك ملف ص بسيط:

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