2013-02-20 14 views
8

मैं RStudio,क्या RStudio में आर-स्क्रिप्ट के लिए कमांड लाइन पैरामीटर निर्दिष्ट करना संभव है?

my_rscript --dataset mydataset 

और फिर उपयोग करने के लिए एक आर-लिपि होने आदेश पंक्ति पैरामीटर संपादित करने के लिए, उदाहरण के लिए, एक अनुसंधान चर, कहते हैं, dataset, उदा में optiion मूल्य को पढ़ने के लिए optparse लाइब्रेरी का उपयोग करना चाहते हैं।

हालांकि, मुझे नहीं पता था कि RStudio में जहां कमांड लाइन प्रदान की जा सकती है, ताकि मैं "स्रोत पर सहेजें" सुविधा का उपयोग कर सकूं। इसके बजाय, मैं इस कार्यक्रम अपने आप में सभी कार्यक्रम मानकों को हार्डकोड करने के लिए है:

dataset <- "mydataset" 

जो स्क्रिप्ट पाठ हर बार अलग-अलग डेटा निर्दिष्ट करने के लिए की आवश्यकता को संशोधित करने की आवश्यकता है।

क्या कोई जानता है कि कमांड लाइन जानकारी कैसे प्रदान करें?

+0

आपका प्रश्न आर के लिए और अधिक आम तौर पर विशेष रूप से RStudio से संबंधित हो रहे हैं नहीं किया, लेकिन, तो मैं retagged यह। यदि यह आपका मतलब नहीं है, तो आपको अपना प्रश्न संपादित करना चाहिए। – TARehman

उत्तर

5

मैं जानता हूँ कि इस सवाल पुराना है और नीचे दिए गए लिंक पुराना है, लेकिन यह सवाल का जवाब। नहीं, RStudio से कमांड लाइन तर्कों तक पहुंचने के लिए यह संभव नहीं है (या 2 9 जनवरी, 2012 तक नहीं था)। ओपन संपादन नई Rscript की एक नई विंडो:

लिंक https://support.rstudio.com/hc/communities/public/questions/200659066-Accessing-command-line-options-in-RStudio?locale=en-us

+6

यह तकनीकी रूप से सही हो सकता है, लेकिन यह सिस्टम ("rscript myscript.r -a -b -c") के माध्यम से तर्क पारित करने के लिए स्पष्ट रूप से संभव है (और हमेशा संभव था) 'जो RStudio कंसोल से निष्पादित कर सकता है - से उत्तर देखें @biocyberman, मुझे लगता है कि स्वीकार्य उत्तर होना चाहिए – andreister

3

आप Rscript programname.r arg1 arg2 arg3 का उपयोग कर अपने प्रोग्राम को कॉल कर सकते हैं। तर्क commandArgs को पास किया जाता है, तो निम्नलिखित सच होगा:

Rscript programname.r F N 32 

> args <- commandArgs(trailingOnly=TRUE) 
> args[1] 
[1] F 
> args[2] 
[1] N 
> args[3] 
[1] 32 
14

अभी के लिए मैं इसे इस तरह से करते हैं। मैं बचाने मैं इसे रखना चाहते हैं कर सकते हैं और यह जैसा कोई नाम: test_myscript.R यह test_myscript.R की सामग्री है:

debug(getopt) # suppose I want to debug 'getopt' function in 'myscript.R' 
system("myscript.R -a -b -c") 
# Debug process start after this. 
# Check ?browser for help about navigating inside browser 
0

यह वास्तव में पुराना है लेकिन मैं इसे भर में ठोकर खाई जब एक ही बात करने के लिए कोशिश कर रहा है और मैं ' समाप्त हो गया किया है, उसे निम्नलिखित की कोशिश कर रहा है, और अच्छा और त्वरित है अगर लोगों को यह (आदेशों आसान आर्ग के एक जोड़े हालांकि राशि के लिए शायद ही उपयोगी) की कोशिश करना चाहते:

को देखते हुए मेरी Rscript जो वर्तमान में शुरू होता है:

args <- commandArgs(TRUE) 
df <- read.csv(args[1], sep=",", check.names=FALSE, row.names = 1) 
. 
. # Do some analysis and plotting etc. 
. 

यदि मैं

args <- c("/path/to/my/inputfile.csv") 

तो args[1] एक ही मूल्य यह हमेशा होता है पर लेता है: कमांड लाइन है कि Rscript अन्यथा प्राप्त होगा, आप args वेक्टर अप 'मैन्युअल' कर सकते हैं अनुकरण करना चाहता था। और मैं बस RStudio में हाइलाइट और निष्पादन करके स्क्रिप्ट में सबकुछ चलाता हूं।

+0

स्क्रिप्ट के बाहर 'args' कैसे सेट करते हैं, इस प्रकार स्क्रिप्ट के अंदर 'args <- commandArgs (TRUE)' उन्हें ओवरराइड नहीं करता है? –

1

यह मेरे लिए काम किया: मेरे Rscript इस प्रकार है:

args <- commandArgs() 
print(paste0("args:", args)) 
print(paste0("args[1]:",args[1])) 
print(paste0("args[2]:",args[2])) 
print(paste0("args[3]:",args[3])) 
print(paste0("# of args:",length(args))) 

'

कमांड लाइन इनपुट मैं Rscript साथ प्रयोग करेंगे का अनुकरण करने के लिए, मैं RStudio में यह दर्ज किया गया:

commandArgs <- function() c("AMZN", 10, 200)

जो वांछित परिणाम दिया:

[1] "args:AMZN" "args:10" "args:200" 
[1] "args[1]:AMZN" 
[1] "args[2]:10" 
[1] "args[3]:200" 
[1] "# of args:3" 
+0

आप स्थायी रूप से 'commandArgs() 'फ़ंक्शन को बदलते हैं। आईएमएचओ यह एक खराब समाधान है। –

1

यदि आप उदाहरण का उपयोग करने में रुचि रखते हैं argparser और विकासशील/Rstudio का उपयोग कर सहभागी का विश्लेषण करने के लिए जारी है, तो आप उपयोग कर सकते हैं निम्नलिखित काम के आसपास:

  1. my_rscript में अपने आदेश पंक्ति पार्सर लिखें और एक वस्तु args कि सभी पार्स इनपुट शामिल पैदा करते हैं।
  2. एक ऐसी लाइन जोड़ें जो फ़ाइल को args ऑब्जेक्ट सहेजती है।
  3. कमांड लाइन से my_rscript चलाएं और रुचि के तर्क निर्दिष्ट करें।
  4. Rstudio में फ़ाइल से args वस्तु लोड और जारी रखने के लिए सहभागी

उदाहरण:

library("argparser") 
parser <- arg_parser(description='Process commandline arguments') 
parser <- add_argument(parser, arg="--dataset", type="character", help = "Dataset argument") 
args = parse_args(parser) 
args_file = "tempArgObjectFile.rds" 
saveRDS(args, args_file); print(args); quit(); #comment this after creating args_file 
args = readRDS(args_file) #use this to load during interactive development 
संबंधित मुद्दे