我可以用 optparse 指定强制参数吗
Can I specify mandatory arguments with optparse
我正在使用 optparse 包,但无法确定是否可以指定强制参数。
install.packages('optparse')
library('optparse')
library('data.table')
# example from vignette
option_list <- list(
# those 2 are linked together by dest='verbose'
# store_true makes sure it does not take any arg by storing TRUE (or default if specified)
make_option(c("-v", "--verbose"), action="store_true", default=TRUE, help="Print extra output [default %default]"),
make_option(c("-q", "--quietly"), action="store_false", dest="verbose", help="Print little output"),
#
make_option(c("-c", "--count"), type="integer", default=5L, help="Number of rgn [default %default]", metavar="number"),
make_option("--generator", default="rnorm", help = "Function to generate random deviates [default \"%default\"]")
)
parser <- OptionParser(option_list=option_list)
# vanilla case
parsedArgs <- parse_args(parser, args = c("-c","100","--generator","fakeGen"))
setcolorder(setDT(stack(parsedArgs)),c('ind','values'))[]
# ind values
#1: verbose TRUE
#2: count 100
#3: generator fakeGen
#4: help FALSE
假设我希望用户输入一个 [-d --date SOMEDATE] 提供默认日期真的没有意义...我怎么知道 optparse有些参数是强制性的?
根据其 documentation,强制性 功能似乎并未由 optparse
包实现。
但是,作为变通方法,您始终可以检查参数值和 stop()
脚本执行以防未设置参数。
一种方法可能是:
install.packages('optparse')
library('optparse')
library('data.table')
# example from vignette
option_list <- list(
make_option(c("-v", "--verbose"), action="store_true", default=TRUE, help="Print extra output [default %default]"),
make_option(c("-q", "--quietly"), action="store_false", dest="verbose", help="Print little output"),
make_option(c("-c", "--count"), type="integer", default=5L, help="Number of rgn [default %default]", metavar="number"),
make_option("--generator", default="rnorm", help = "Function to generate random deviates [default \"%default\"]"),
make_option(c("-d", "--date"), action = "store", default = NA, type = 'character',
help = "some date to be converted from character")
)
parser <- OptionParser(option_list=option_list)
# check date is provided
if (!is.na(parser$date)) {
mydate <- as.Date(parser$date)
}
else {
stop("date parameter must be provided. See script usage (--help)")
}
通过将日期的默认值设置为NA
,我们可以稍后检查它是否已提供。
注意:由于 date
将包含用户的输入,因此您应该做一些检查 and/or 处理 as.Date()
函数可能发出的错误,如果它无法解析给定的 参数选项.
我正在使用 optparse 包,但无法确定是否可以指定强制参数。
install.packages('optparse')
library('optparse')
library('data.table')
# example from vignette
option_list <- list(
# those 2 are linked together by dest='verbose'
# store_true makes sure it does not take any arg by storing TRUE (or default if specified)
make_option(c("-v", "--verbose"), action="store_true", default=TRUE, help="Print extra output [default %default]"),
make_option(c("-q", "--quietly"), action="store_false", dest="verbose", help="Print little output"),
#
make_option(c("-c", "--count"), type="integer", default=5L, help="Number of rgn [default %default]", metavar="number"),
make_option("--generator", default="rnorm", help = "Function to generate random deviates [default \"%default\"]")
)
parser <- OptionParser(option_list=option_list)
# vanilla case
parsedArgs <- parse_args(parser, args = c("-c","100","--generator","fakeGen"))
setcolorder(setDT(stack(parsedArgs)),c('ind','values'))[]
# ind values
#1: verbose TRUE
#2: count 100
#3: generator fakeGen
#4: help FALSE
假设我希望用户输入一个 [-d --date SOMEDATE] 提供默认日期真的没有意义...我怎么知道 optparse有些参数是强制性的?
根据其 documentation,强制性 功能似乎并未由 optparse
包实现。
但是,作为变通方法,您始终可以检查参数值和 stop()
脚本执行以防未设置参数。
一种方法可能是:
install.packages('optparse')
library('optparse')
library('data.table')
# example from vignette
option_list <- list(
make_option(c("-v", "--verbose"), action="store_true", default=TRUE, help="Print extra output [default %default]"),
make_option(c("-q", "--quietly"), action="store_false", dest="verbose", help="Print little output"),
make_option(c("-c", "--count"), type="integer", default=5L, help="Number of rgn [default %default]", metavar="number"),
make_option("--generator", default="rnorm", help = "Function to generate random deviates [default \"%default\"]"),
make_option(c("-d", "--date"), action = "store", default = NA, type = 'character',
help = "some date to be converted from character")
)
parser <- OptionParser(option_list=option_list)
# check date is provided
if (!is.na(parser$date)) {
mydate <- as.Date(parser$date)
}
else {
stop("date parameter must be provided. See script usage (--help)")
}
通过将日期的默认值设置为NA
,我们可以稍后检查它是否已提供。
注意:由于 date
将包含用户的输入,因此您应该做一些检查 and/or 处理 as.Date()
函数可能发出的错误,如果它无法解析给定的 参数选项.