कमांड लाइन से R स्क्रिप्ट चलाएँ


484

मेरे पास एक फाइल है, जिसे कहा जाता है a.r, इसमें chmod755 नंबर हैं,

sayHello <- function(){
   print('hello')
}

sayHello()

मैं इसे कमांड-लाइन के माध्यम से कैसे चला सकता हूं?



5
tl; dr: बस अपनी स्क्रिप्ट की पहली पंक्ति के रूप में जोड़ें:#!/usr/bin/env Rscript
michael

जवाबों:


671

यदि आप चाहते हैं कि आउटपुट को प्रिंट करने के लिए टर्मिनल का उपयोग करना सबसे अच्छा है

Rscript a.R

ध्यान दें कि R CMD BATCH a.Rआउटपुट को रीडायरेक्ट करने के बजाय आउटपुट को स्टैंडर्ड आउट करने के लिए और टर्मिनल पर प्रदर्शित करने के लिए .Rout नामक एक नई फ़ाइल बनाई जाएगी।

R CMD BATCH a.R
# Check the output
cat a.Rout

नोटस्क्रिप्ट का उपयोग करने के बारे में एक और बात यह है कि यह methodsपैकेज को डिफ़ॉल्ट रूप से लोड नहीं करता है जो भ्रम पैदा कर सकता है। इसलिए यदि आप ऐसी किसी भी चीज़ पर भरोसा कर रहे हैं जो आपको प्रदान करती है, तो आप इसे अपनी स्क्रिप्ट में स्पष्ट रूप से लोड करना चाहेंगे।

यदि आप वास्तव ./a.Rमें स्क्रिप्ट को कॉल करने के तरीके का उपयोग करना चाहते हैं तो आप स्क्रिप्ट #!के शीर्ष पर एक उपयुक्त जोड़ सकते हैं

#!/usr/bin/env Rscript
sayHello <- function(){
   print('hello')
}

sayHello()

मैं यह भी नोट करूंगा कि यदि आप एक * यूनिक्स प्रणाली पर चल रहे हैं तो उपयोगी लिटलर पैकेज है जो आर को आसान कमांड लाइन पाइपिंग प्रदान करता है। लिपि के जरिए लिपि का उपयोग करना आवश्यक हो सकता है। आगे के विवरण इस प्रश्न में मिल सकते हैं ।


28
के बिना #! आपकी कमांड लाइन एक कमांड-लाइन स्क्रिप्ट के रूप में इसे चलाने की कोशिश करती है, उसी दुभाषिया का उपयोग करती है जो आपकी आज्ञाओं की व्याख्या करता है। यह नहीं जानता कि इसका आर होना चाहिए, भले ही फ़ाइल एक .R या .r प्रत्यय में समाप्त हो। #! कमांड लाइन बताती है कि फाइल में कौन सी भाषा निहित है।
Spacedman

4
मैंने वर्षों में यहाँ कुछ प्रश्न पकड़े और लिटलर और रूपलेख दोनों को संदर्भित करने में सक्षम। मुख्य बात यह है कि लोगों को बताएं, जैसा आपने किया, वह R CMD BATCHभयानक है। कुछ भी हो लेकिन वह ...
डिर्क एडल्डबुलेटेल

@ डायसन मैं आर स्क्रिप्ट के साथ भी काम कर रहा हूं और मैं जावा प्रोग्राम से आर स्क्रिप्ट निष्पादित करने की कोशिश कर रहा हूं और मुझे कुछ त्रुटि दिखाई दे रही है। यहाँ मेरा सवाल है । देखें कि क्या आप मदद कर सकते हैं। मैं इसे सरल बनाने के लिए आपके हैलो फ़ंक्शन उदाहरण का उपयोग कर रहा हूं।
user1950349

क्या कमांड में ही लाइब्रेरी पथ को संशोधित करने का कोई तरीका है? कुछ इसी तरहR CMD INSTALL -l ~/R/lib-dev
mikemtnbikes

@mikemtnbikes नहीं है कि मुझे पता है। स्क्रिप्ट के अंदर .libPaths () को बदलने के लिए कोई हमेशा कुछ जोड़ सकता है। लेकिन मुझे ऐसा कोई विकल्प नहीं दिख रहा है, जो रुपये के लिए मैन पेज में बताया गया हो।
दैसन

107

यह सीधे सवाल का जवाब नहीं देता है। लेकिन कोई व्यक्ति यहां समाप्त हो सकता है क्योंकि वे टर्मिनल से आर का एक ऑनलाइनर चलाना चाहते हैं। उदाहरण के लिए, यदि आप कुछ छूटे हुए पैकेजों को स्थापित करना चाहते हैं और छोड़ना चाहते हैं, तो यह ऑनलाइनर बहुत सुविधाजनक हो सकता है। मैं इसका उपयोग तब करता हूं जब मुझे अचानक पता चलता है कि मैं कुछ पैकेजों को याद करता हूं, और मैं उन्हें वहां स्थापित करना चाहता हूं जहां मैं चाहता हूं।

  • डिफ़ॉल्ट स्थान पर स्थापित करने के लिए:

    R -e 'install.packages(c("package1", "package2"))'
  • rootविशेषाधिकारों की आवश्यकता वाले स्थान पर स्थापित करने के लिए :

    R -e 'install.packages(c("package1", "package2"), lib="/usr/local/lib/R/site-library")' 

5
एक कमांड चलाने के लिए आप Rscript -e "getwd()"टर्मिनल में भी इस्तेमाल कर सकते हैं । रुस्क्रिप्ट केवल कमांड आउटपुट प्रिंट करेगी और पूर्ण आर स्टार्टअप संदेश नहीं।
पॉल रौजीक्स

r -e "cat(getwd(),'\n')"यदि आपने लिट्लर स्थापित किया है, तो आप इसका उपयोग भी कर सकते हैं । में इस सवाल का जवाब एक प्रकार की कटार Eddelbuettel के रूप में बड़ा और Rscript के बीच का अंतर बताते हैं।
पॉल रौजीक्स

2
मेरी समस्या का अनुमान लगाने के लिए धन्यवाद! मुझे एक और चीज़ की ज़रूरत थी:R -e 'install.packages("package", repos="http://cran.us.r-project.org")'
एरिन

4
R -r 'options(warn=2); install...'निष्पादन को रोकने और स्थापना विफल होने की स्थिति में गैर-शून्य त्रुटि कोड प्राप्त करने के लिए एक का उपयोग करना चाहिए । अन्यथा, कोई भी install.packagesत्रुटियां सिर्फ चेतावनी हैं।
रवर्निका १ ''१


21

आपको ?Rscriptटर्मिनल से एक आर स्क्रिप्ट चलाने के लिए कमांड की आवश्यकता है ।

की जाँच करें http://stat.ethz.ch/R-manual/R-devel/library/utils/html/Rscript.html

उदाहरण

## example #! script for a Unix-alike

#! /path/to/Rscript --vanilla --default-packages=utils
args <- commandArgs(TRUE)
res <- try(install.packages(args))
if(inherits(res, "try-error")) q(status=1) else q()

यह केवल एक उदाहरण था कि आप एक आर स्क्रिप्ट कैसे लिखते / चलाते हैं, आपकी फ़ाइल में #! / पथ / से / स्क्रिप्ट को जोड़ते हैं और फिर chmod + x <your script.r> और ./<your script.r>
मेहुल राठौड़

10

Rmd को कई कमांड द्वारा knitr और rmarkdown के साथ कमांड में कैसे चलाएं और फिर RPubs में HTML फ़ाइल अपलोड करें

यहां एक उदाहरण है: दो पुस्तकालयों को लोड करें और एक आर कमांड चलाएं

R -e 'library("rmarkdown");library("knitr");rmarkdown::render("NormalDevconJuly.Rmd")'

R -e 'library("markdown");rpubsUpload("normalDev","NormalDevconJuly.html")'

3
ध्यान दें कि पुस्तकालय लोड करना छोड़ना सरल होगा; R -e 'markdown::rpubsUpload("normalDev","NormalDevconJuly.html")'
gregmacfarlane

3

फिर भी * यूनिक्स सिस्टम के लिए रुपये का उपयोग करने का एक और तरीका प्रक्रिया प्रतिस्थापन है

Rscript <(zcat a.r)
# [1] "hello"

जो स्पष्ट रूप से स्वीकार किए गए उत्तर के समान है, लेकिन यह आपको कमांड की शक्ति को बचाने के बिना अपनी फ़ाइल में हेरफेर करने और चलाने की अनुमति देता है, जैसे:

Rscript <(sed s/hello/bye/ a.r)
# [1] "bye"

इसी तरह Rscript -e "Rcode"यह भी एक फ़ाइल में बचत के बिना चलाने के लिए अनुमति देता है। इसलिए इसका उपयोग आर-कोड उत्पन्न करने वाली लिपियों के साथ किया जा सकता है, जैसे:

Rscript <(echo "head(iris,2)")
# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
# 1          5.1         3.5          1.4         0.2  setosa
# 2          4.9         3.0          1.4         0.2  setosa

3

बस प्रलेखन के लिए, कभी-कभी आपको स्क्रिप्ट चलाने की आवश्यकता होती है sudo:

sudo Rscript path/to/your/file.R

2
आपको ऐसा कब करने की आवश्यकता है?
सरलगामी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.