2012-07-25 13 views
6

मैं नीचे निम्नलिखित समारोह है, जो मैं इतना है कि मैं कमांड लाइन से R स्क्रिप्ट चला सकते हैं आदेश पंक्ति तर्क पार्स करने के लिए उपयोग कर रहा हूँ, है:आर समारोह

parseArguments <- function() { 
    text1 <- commandArgs(TRUE) 
    eval(parse(text=gsub("\\s", ";", gsub("--","", text1)))) 
    args <- list() 
    for(ar in ls()[! ls() %in% c("text1", "args")]) {args[ar] <- get(ar)} 
    return (args) 
} 

यहाँ एक CLI है सत्र उत्पादन जब मैं एक R स्क्रिप्ट, सीएल तर्क पार्स करने के लिए ऊपर समारोह का उपयोग करता है निम्नलिखित आदेश पंक्ति तर्क का उपयोग कर कॉल करने का प्रयास:

./myscript.R --param1='XLIF' --param2='ESX' --param3=5650.0 --param4=5499.2 --param5=0.0027397260274 --param6='Jul' --riskfreerate=0.817284313119 --datafile='/path/to/some/datafile.csv' --imagedir='/path/to/images' --param7=2012 --param8=2 
Error in parse(text = gsub("\\s", ";", gsub("--", "", text1))) : 
    8:10: unexpected '/' 
7: riskfreerate=0.817284313119 
8: datafile=/ 
      ^
Calls: parseArguments -> eval -> parse 
Execution halted 

मदद?

[[अपडेट]]

मैं एक प्रकार की कटार की सलाह का पालन किया और स्थापित optparse पुस्तकालय है।

library(optparse) 

# Get the parameters 
option_list <- list(
    make_option(c("-m", "--param1"), action="store_false"), 
    make_option(c("-t", "--param2"), action="store_false"), 
    make_option(c("-a", "--param3"), action="store_false"), 
    make_option(c("-s", "--param4"), action="store_false"), 
    make_option(c("-x", "--param5"), action="store_false"), 
    make_option(c("-o", "--param6"), action="store_false"), 
    make_option(c("-y", "--param7"), action="store_false"), 
    make_option(c("-r", "--riskfreerate"), action="store_false"), 
    make_option(c("-c", "--param8"), action="store_false"), 
    make_option(c("-d", "--datafile"), action="store_false"), 
    make_option(c("-i", "--imagedir"), action="store_false") 
) 

# get command line options, i 
opt <- parse_args(OptionParser(option_list=option_list)) 

जब मैं इसे पारित एक ही आदेश पंक्ति पैरामीटर आर स्क्रिप्ट चलाने, मैं: मेरे कोड अब इस तरह दिखता है

Loading required package: methods 
Loading required package: getopt 
Error in getopt(spec = spec, opt = args) : 
    long flag "param1" accepts no arguments 
Calls: parse_args -> getopt 
Execution halted 

???

उत्तर

3

मैं अपने दूसरे प्रश्न का उत्तर देते, त्रुटि के बारे में आप optparse साथ मुठभेड़:

make_option मदद पृष्ठ (...) से

:

कार्रवाई: एक चरित्र स्ट्रिंग कि कार्रवाई optparse का वर्णन करता है जब इसे किसी विकल्प से मुकाबला करना चाहिए, या तो "स्टोर", "store_true", या "store_false"। डिफॉल्ट "स्टोर" है जो इंगित करता है कि विकल्प को निम्न स्ट्रिंग स्ट्रिंग पर पाया जाता है, तो निर्दिष्ट पैरामीटर को स्टोर करना चाहिए। विकल्प अगर पाया जाता है तो "store_true" ट्रू स्टोर करता है और विकल्प मिलने पर "store_false" FALSE स्टोर करता है।

संक्षेप में, आप action = "store" (डिफ़ॉल्ट) का उपयोग करने के लिए यदि आप की तरह कुछ चलाना चाहते हैं की जरूरत है:। लिंक के लिए

./myscript.R --param1='XLIF' --param2='ESX' [...] 
7

हां, इसके लिए सीआरएएन पैकेज getopt और optparse हैं।

+0

+1 –

+0

कृपया मेरे (optparse का प्रयोग करके) अद्यतन प्रश्न देखें –

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