R OPTPASE中必须使用1个字母的参数吗?

R OPTPASE中必须使用1个字母的参数吗?,r,optparse,R,Optparse,我在中使用optpass解析R中的参数。然后我从命令行调用R代码,并按如下方式传递参数Rscript myscript.R-a xx-b yy。它工作得很好,但是我有点困惑于像-a,-b这样的单字母参数的用法。 在我的例子中,我有20个论点…给每个论点分配一个字母是非常不方便的 make_option(c("-o", "--output_path"), type="character"), make_option(c("-t", "--data_type"), type="character")

我在中使用optpass解析R中的参数。然后我从命令行调用R代码,并按如下方式传递参数Rscript myscript.R-a xx-b yy。它工作得很好,但是我有点困惑于像-a,-b这样的单字母参数的用法。 在我的例子中,我有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进行测试

准确误差是多少?你对Rscript的调用是什么样子的?@MrFlick:我对R script的调用就像我显示的那样:Rscript myscript.R-a xx-b yy。错误是说我应该使用1个字母的参数。@MrFlick:我可以简单地使用make\u option-output\u path,type=character吗?为什么有必要使用c-o,-output_path?这和您在上面发布的命令是一样的,您说的有效。那么你想使用单字母参数还是不想使用单字母参数?到底是什么引发了这个错误?@MrFlick:是的,这个命令可以工作,但它只适用于1个字母的参数。我无法传递-output_路径,例如:Rscript myscript.R-output_路径xxx。我的问题是,我应该如何更改代码,以便能够使用属性的全名运行Rscript命令:Rscript myscript.R-output_path xxx而不是Rscript myscript.R-o xxx。