带有命令行参数的 R optparse 错误
R optparse error with command line arguments
出于某种原因,此脚本中的 optparse
用法中断:
test.R
:
#!/usr/bin/env Rscript
library("optparse")
option_list <- list(
make_option(c("-n", "--name"), type="character", default=FALSE,
dest="report_name", help="A different name to use for the file"),
make_option(c("-h", "--height"), type="numeric", default=12,
dest = "plot_height", help="Height for plot [default %default]",
metavar="plot_height"),
make_option(c("-w", "--width"), type="numeric", default=10,
dest = "plot_width", help="Width for plot [default %default]",
metavar="plot_width")
)
opt <- parse_args(OptionParser(option_list=option_list), positional_arguments = TRUE)
print(opt)
report_name <- opt$options$report_name
plot_height <- opt$options$plot_height
plot_width <- opt$options$plot_width
input_dir <- opt$args[1] # input directory
我收到这个错误:
$ ./test.R --name "report1" --height 42 --width 12 foo
Error in getopt(spec = spec, opt = args) :
redundant short names for flags (column 2).
Calls: parse_args -> getopt
Execution halted
但是,如果我从这一行中删除 "-h"
:
make_option(c("--height"), type="numeric", default=12,
dest = "plot_height", help="Height for plot [default %default]"
似乎工作正常;
$ ./test.R --name "report1" --height 42 --width 12 foo
$options
$options$report_name
[1] "report1"
$options$plot_height
[1] 42
$options$plot_width
[1] 12
$options$help
[1] FALSE
$args
[1] "foo"
知道这里会发生什么吗?
我正在使用 R 3.3.0 和 optparse_1.3.2
(getopt_1.20.0
)
-h
标志由 optparse 保留(它被描述为 optparse 的一个特性,它不在 getopt 中,from the getopt.R source file on Github):
Some features implemented in optparse package unavailable in getopt:
2. Automatic generation of an help option and printing of help text when encounters an "-h"
因此,当用户指定 -h
时,sanity check for uniqueness of flags fails. The issue tracker 似乎没有提及需要为这种情况创建更好的错误消息。
最后,请注意 optparse 似乎正在调用 getopt,因为它们具有相同的作者。
出于某种原因,此脚本中的 optparse
用法中断:
test.R
:
#!/usr/bin/env Rscript
library("optparse")
option_list <- list(
make_option(c("-n", "--name"), type="character", default=FALSE,
dest="report_name", help="A different name to use for the file"),
make_option(c("-h", "--height"), type="numeric", default=12,
dest = "plot_height", help="Height for plot [default %default]",
metavar="plot_height"),
make_option(c("-w", "--width"), type="numeric", default=10,
dest = "plot_width", help="Width for plot [default %default]",
metavar="plot_width")
)
opt <- parse_args(OptionParser(option_list=option_list), positional_arguments = TRUE)
print(opt)
report_name <- opt$options$report_name
plot_height <- opt$options$plot_height
plot_width <- opt$options$plot_width
input_dir <- opt$args[1] # input directory
我收到这个错误:
$ ./test.R --name "report1" --height 42 --width 12 foo
Error in getopt(spec = spec, opt = args) :
redundant short names for flags (column 2).
Calls: parse_args -> getopt
Execution halted
但是,如果我从这一行中删除 "-h"
:
make_option(c("--height"), type="numeric", default=12,
dest = "plot_height", help="Height for plot [default %default]"
似乎工作正常;
$ ./test.R --name "report1" --height 42 --width 12 foo
$options
$options$report_name
[1] "report1"
$options$plot_height
[1] 42
$options$plot_width
[1] 12
$options$help
[1] FALSE
$args
[1] "foo"
知道这里会发生什么吗?
我正在使用 R 3.3.0 和 optparse_1.3.2
(getopt_1.20.0
)
-h
标志由 optparse 保留(它被描述为 optparse 的一个特性,它不在 getopt 中,from the getopt.R source file on Github):
Some features implemented in optparse package unavailable in getopt:
2. Automatic generation of an help option and printing of help text when encounters an "-h"
因此,当用户指定 -h
时,sanity check for uniqueness of flags fails. The issue tracker 似乎没有提及需要为这种情况创建更好的错误消息。
最后,请注意 optparse 似乎正在调用 getopt,因为它们具有相同的作者。