r - क्यों(या कब) आरएमडी बैच से बेहतर है(या लिटलर)?




batch-file cmd (2)

मैं cron में R साथ कुछ वेबक्रैपिंग स्वचालित कर रहा हूं और कभी-कभी मैं R CMD BATCH का उपयोग Rscript हूं और कभी-कभी मैं Rscript उपयोग करता Rscript

यह तय करने के लिए कि कौन सा उपयोग करना है, मैं मुख्य रूप से फोकस करता हूं यदि मैं चाहता हूं। .Rout फ़ाइल या नहीं।

लेकिन SO में कुछ प्रश्नों के उत्तर पढ़ना ( this तरह या this ) ऐसा लगता है कि Rscript R CMD BATCH को Rscript पसंद है।

तो मेरे प्रश्न हैं:

  • इस तथ्य के अलावा कि वाक्यविन्यास थोड़ा अलग है और R CMD BATCH एक .Rout फ़ाइल बचाता है जबकि Rscript नहीं करता है, उनमें से दोनों के बीच मुख्य अंतर क्या हैं?

  • मुझे एक दूसरे को कब पसंद करना चाहिए? अधिक विशेष रूप से, ऊपर वर्णित cron नौकरी में, उनमें से एक पसंदीदा है?

  • मैंने अभी तक Rscript उपयोग नहीं किया है, यह Rscript और R CMD BATCH दोनों से अलग कैसे है?


जो मैं समझता हूं उससे:

आर सीएमडी बैच:

  • इनपुट कथन गूंजें
  • stdout करने के लिए आउटपुट नहीं कर सकते हैं

Rscript:

  • गूंज नहीं करता है
  • आउटपुट के लिए आउटपुट
  • एक लाइनर में उपयोग किया जा सकता है (यानी कोई इनपुट फ़ाइल के साथ)

के रूप में बड़ा:

  • वह सब प्रतिलिपि करता है
  • stdin से आदेश पढ़ सकते हैं (पाइपलाइनिंग के लिए उपयोगी)
  • तेजी से स्टार्टअप समय
  • विधियों के पैकेज लोड करें

अभ्यास में मैं स्क्रिप्ट चलाने के लिए, कमांड लाइन या क्रॉन में चलाने के लिए प्रतिलेख का उपयोग करता हूं।


R CMD BATCH हम सब कुछ साल पहले था। यह I / O बहुत कठिन बनाता है और पीछे फ़ाइलों को छोड़ देता है।

चीजें बेहतर हो गईं, पहले लिटलर के साथ और फिर भी प्रतिलेख के साथ। दोनों का उपयोग 'शेबांग' लाइनों के लिए किया जा सकता है जैसे कि

 #!/usr/bin/r

 #!/usr/bin/Rscript

और दोनों का उपयोग Getopt और optparse जैसे पैकेजों के साथ किया जा सकता है --- आपको उचित आर स्क्रिप्ट लिखने की अनुमति देता है जो कमांड के रूप में कार्य कर सकता है। यदि उनमें से दर्जनों हैं, तो इस तरह के सरल लोगों से शुरू करें जिन्हें मैं install.r pkga pkgb pkgc रूप में कॉल कर सकता install.r pkga pkgb pkgc और जो तीनों और उनकी निर्भरताओं को स्थापित करेगा) मेरे लिए कमांड लाइन से आर प्रॉम्प्ट को बिना छेड़छाड़ किए:

#!/usr/bin/env r       
#
# a simple example to install one or more packages 

if (is.null(argv) | length(argv)<1) {
  cat("Usage: installr.r pkg1 [pkg2 pkg3 ...]\n")
  q()
}

## adjust as necessary, see help('download.packages') 
repos <- "http://cran.rstudio.com"

## this makes sense on Debian where no packages touch /usr/local 
lib.loc <- "/usr/local/lib/R/site-library"

install.packages(argv, lib.loc, repos)

और बस कार्ल की तरह, मेरे पास समान आर स्क्रिप्ट्स को कॉल करने वाले cronjobs हैं।

2015-11-04 को संपादित करें: पिछले हफ्ते तक, लिटलर अब भी सीआरएएन पर है





rscript