在 optparse 中必须使用 1 个字母的参数吗?

Is it mandatory to use 1 letter arguments in optparse?

我正在使用 optparse 解析 R 中的参数。然后我从命令行调用 R 代码并按如下方式传递参数 Rscript myscript.R -a xx -b yy。它运行良好,但我对 -a-b 等 1 个字母参数的用法有点困惑。 在我的例子中,我有 20 个参数......为每个参数分配一个字母非常不方便。

make_option(c("-o", "--output_path"), type="character"),
make_option(c("-t", "--data_type"), type="character")

如果我在命令行中使用完整名称 --output_path,我会收到错误消息。

如何解决这个问题?

我对使用短名称或长名称没有任何问题。当我指定两个版本时,我可以调用任一

toargs <- function(x) strsplit(x, " ")[[1]][-(1:2)]
option_list <- list(make_option(c("-o", "--output_path"), type="character"))
parser <- OptionParser("test", option_list)

parse_args(parser, toargs("Rscript myscript.R --output_path xxx"))
# $output_path
# [1] "xxx"
# $help
# [1] FALSE

parse_args(parser, toargs("Rscript myscript.R -o xxx"))
# $output_path
# [1] "xxx"
# $help
# [1] FALSE

它只适用于长版本

option_list <- list(make_option("--output_path", type="character"))
parser <- OptionParser("test", option_list)

parse_args(parser, toargs("Rscript myscript.R --output_path xxx"))
# $output_path
# [1] "xxx"
# $help
# [1] FALSE

parse_args(parser, toargs("Rscript myscript.R -o xxx"))
# Error : short flag "o" is invalid

一个字母参数不是必须的;他们是可选的。但是名字一定要长

使用 optparse_1.6.4

测试