2010-08-08 17 views
36

क्या आर स्क्रिप्ट्स को पारित कमांड लाइन तर्कों को स्वचालित रूप से पार्स करने का कोई सुविधाजनक तरीका है?आर स्क्रिप्ट्स में पार्सिंग कमांड लाइन तर्क

कुछ perl के Getopt::Long की तरह कुछ?

+0

http://stackoverflow.com/questions/2151212/how-can-i-read-command-line-parameters-from-an-r-script से संबंधित है। – Blaisorblade

उत्तर

32

वहाँ क्रैन पर तीन संकुल हैं:

  • getopt: सी-तरह getopt व्यवहार
  • optparse: एक कमांड लाइन पार्सर से प्रेरित पायथन के optparse पुस्तकालय
  • argparse: एक कमांड लाइन वैकल्पिक और पोजिशनल तर्क पार्सर (पायथन के argparse लाइब्रेरी से प्रेरित)। इस पैकेज के लिए आवश्यक है कि एक पाइथन दुभाषिया argparse और json (या simplejson) मॉड्यूल के साथ स्थापित किया जाए।

अद्यतन:

  • docopt: आप इसे विशिष्ट प्रारूप में एक विवरण देकर एक कमांड लाइन इंटरफेस परिभाषित करने देता है। यह एक बंदरगाह है।
  • argparser: क्रॉस-प्लेटफ़ॉर्म कमांड-लाइन तर्क पार्सर पूरी तरह से आर में कोई बाहरी निर्भरता के साथ लिखा गया है। यह पैकेज प्रतिलेख फ्रंट-एंड के साथ उपयोगी है और आर स्क्रिप्ट को निष्पादन योग्य स्क्रिप्ट में बदलने की सुविधा प्रदान करता है।
  • minimist: मिनीमिस्ट जावास्क्रिप्ट लाइब्रेरी के लिए बाध्यकारी। यह मॉड्यूल सभी कल्पित सजावट (कोई बाहरी निर्भरता)
  • optigrab: एक सरल, साफ वाक्यविन्यास का उपयोग करके कमांड लाइन से पार्स विकल्प के बिना आशावादी के तर्क पार्सर की गड़बड़ी लागू करता है। इसके लिए बहुत कम या कोई विनिर्देश नहीं है और छोटे और लंबे विकल्प, जीएनयू-, जावा- या माइक्रोसॉफ्ट-शैली वाक्यविन्यास, क्रिया आदेश और अधिक का समर्थन करता है।
+3

किसी कारण से, 'argparse' वास्तव में * * पायथन की आवश्यकता है। मेड मुझे कोशिश 'optparse' पहले ... – krlmlr

+4

अवांछित सलाह - के रूप में आकर्षक रूप में यह आर के भीतर से बकाया अजगर argparse पैकेज का उपयोग करने के लिए है, क्रॉस-भाषा निर्भरता सिर्फ अपने अनुसंधान स्क्रिप्ट है कि बनाता है और अधिक जटिल और नाजुक। ऐसा मत करो ऊपर वर्णित शुद्ध-आर विकल्पों में से एक का उपयोग करें। –

25

कमांडअर्स() का उपयोग करने का सबसे आसान तरीका है। "Rscript options.R X Y Z" का उपयोग

options <- commandArgs(trailingOnly = TRUE) 
options 

रन: - उदाहरण के रूप में "options.R" नीचे दिए गए कोड को बचाने के। परिणाम:

[1] "x" "y" "z" 

अर्थात 3 तत्वों, तर्क प्रति एक की एक सूची।

[email protected]:~$ r -e 'print(argv)' flim flam flom 
[1] "flim" "flam" "flom" 
[email protected]:~$ 

हम सिर्फ littler में argv का उपयोग करें:

+7

यह 'getopt' विकल्प पार्सिंग के समान नहीं है। –

+0

कृपया ध्यान दें कि मैंने लगभग 7 साल पहले इसका उत्तर दिया था; अब एक बेहतर तरीका होने के लिए निश्चित है :) – neilfws

11

बस Rscript जवाब पूरक। मुझे getopt के साथ शुभकामनाएं मिलीं, जो दो उपलब्ध पार्सिंग पैकेजों में से पुरानी थीं।

संबंधित मुद्दे