2010-12-28 15 views
15

पर मेरे पास एक बैश स्क्रिप्ट है जो एक सीएसवी फ़ाइल और एक आर फ़ाइल बनाता है जो उस से ग्राफ बनाता है।बैश में कमांड लाइन तर्क

Error in is.vector(X) : subscript out of bounds 
Calls: print ... <Anonymous> -> lapply -> FUN -> lapply -> is.vector 
Execution halted 

मेरी Graphs.R के पहले कुछ पंक्तियां हैं::

बैश स्क्रिप्ट मैं Rscript Graphs.R 10

फोन के अंत में प्रतिक्रिया मैं इस प्रकार है

#!/bin/Rscript 
args <- commandArgs(TRUE) 
CorrAns = args[1] 

कोई विचार नहीं कि मैं क्या गलत कर रहा हूं? नेट पर सलाह मुझे यह कहने के लिए प्रतीत होती है कि यह काम करना चाहिए। commandArgs

उत्तर

13
args.R

में निम्नलिखित
print(commandArgs(TRUE)[1]) 

साथ

और args.sh

Rscript args.R 10 

में निम्नलिखित मुझे bash args.sh

से निम्न आउटपुट मिलता है
[1] "10" 

और कोई त्रुटि नहीं। यदि आवश्यक हो, as.numeric(commandArgs(TRUE)[1]) का उपयोग कर एक संख्यात्मक प्रकार में कनवर्ट करें।

+0

धन्यवाद। मैंने पाया है कि यह एक स्ट्रिंग के रूप में लौटाता है। मैं इसे संख्यात्मक मान में कैसे परिवर्तित करूं? मैं बस इसका जवाब खोजने की कोशिश कर रहा हूं। – samar

+0

@samar 'प्रिंट (as.numeric (commandArgs (TRUE) [1])) 'प्रिंट' [1] 10'। – marcog

+0

बस जवाब मिला। x <- (commandArgs (TRUE) [1]) और फिर CorrAns <- eval (parse (text = x)) – samar

1

की इसकी समझ बनाने के लिए बहुत मेहनत docs पढ़ना, यह आप commandArgs() करने के लिए कॉल से TRUE दूर करने के लिए के रूप में आप --args साथ स्क्रिप्ट कॉल नहीं करते की जरूरत हो सकती है। या तो, या आपको Rscript Graphs.R --args 10 पर कॉल करने की आवश्यकता है।

प्रयोग

commandArgs(trailingOnly = FALSE)

तर्क

trailingOnly तार्किक। --args के बाद तर्क वापस लौटाए जाएंगे?

+0

मैंने कोशिश की और निम्न त्रुटि संदेश – samar

+0

धन्यवाद मिला।मैंने ऐसा किया लेकिन त्रुटि संदेश जैसा मैंने पहली बार रिपोर्ट किया था – samar

+0

@samar मेरा नया उत्तर देखें और देखें कि क्या इससे मदद मिलती है? – marcog

5

बस एक अनुमान, शायद आप सांख्यिक को चरित्र से CorrAns कन्वर्ट करने के लिए, ?CommandArgs का मूल्य खंड के बाद से की जरूरत है कहते हैं:

नाम निष्पादन की और उपयोगकर्ता के आपूर्ति युक्त चरित्र वेक्टर कमांड लाइन तर्क।

अद्यतन: यह हो सकता है के रूप में आसान के रूप में:

#!/bin/Rscript 
args <- commandArgs(TRUE) 
(CorrAns = args[1]) 
(CorrAns = as.numeric(args[1])) 
+0

धन्यवाद। यह सुनिश्चित नहीं है कि इसे कैसे कार्यान्वित किया जाए। मुझे नहीं लगता कि आर में परिवर्तनीय नाम किसी भी चरित्र या संख्या से जुड़े थे। हालांकि फिर से आर इंट्रो बुक की जांच होगी। – samar

+0

@samar मैं सुझाव देता हूं कि 'as.numeric (args [1])' जैसा कि मैंने अपने अद्यतन उत्तर में किया था। –

+0

बहुत बहुत धन्यवाद। यह मेरे लिए एक नई साइट है जैसे कि आर मेरे लिए एक नया अनुभव है। दोनों महान संतुष्टि प्रदान करते हैं। – samar

0

Rscript args.R 10 जहां 10 संख्यात्मक मान है जिसे हम आर स्क्रिप्ट में पास करना चाहते हैं। मूल्य जो फिर एक चर को सौंपा जा सकता बाहर

print(as.numeric(commandArgs(TRUE)[1]) प्रिंट।

+0

यह मेरे अद्यतन उत्तर के समान है, और जिस जवाब को आपने "सर्वश्रेष्ठ" के रूप में स्वीकार किया है, वह आपके प्रश्न का उत्तर नहीं देता है। –

+0

जोशुआ, जहां तक ​​मुझे पता है कि मैंने अपनी जरूरतों को पूरा करने के लिए मार्कक के जवाब को अनुकूलित किया और फिर इसे "सर्वश्रेष्ठ" उत्तर के रूप में दर्ज किया। मुझे याद नहीं है कि उस समय आपका नवीनतम उत्तर दिखाई दे रहा था। हालांकि, मैं सहायता की सराहना करता हूं। – samar

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