无法通过docopt包传递两个数字参数

时间:2017-09-11 03:38:57

标签: r docopt

在使用R创建命令行工具时,我决定使用docopt package。它适用于传递标志,但我无法弄清楚如何传递两个数值。请参阅以下代码:

#! /usr/bin/Rscript

'usage: ./test.R [-lr <low> -hr <high>]

options:
 -h --help         Shows this screen
 -lr --low <low>         Passes low risk investiment
 -hr --high <high>        Passes high risk investiment' -> doc

library(docopt)
# retrieve the command-line arguments
opts <- docopt(doc)
# what are the options? Note that stripped versions of the parameters are added to the returned list
cat(opts$high)
cat(opts$low)
str(opts) 

每当我尝试使用./test.R -lr 2000 -hr 4000运行时,它都会警告我正在加载方法包并且不返回任何其他内容。

  • 这里我的错误是什么?

1 个答案:

答案 0 :(得分:1)

首先,placementId被指定两次:一次是“帮助”,另一次是“高”,所以你会遇到问题。为了解决这个问题,我将使用大写字母作为短参数。其次,选项的参数必须是-h或大写,因此<angular-brackets>不起作用。 (显然它还需要选项和它的参数之间的空格。)我将它扩展为与长选项相同的命名参数。

此外(虽然可能并非严格要求),我认为逗号有助于澄清事情。 (修改:显然-lr不喜欢使用前导docopt.R,因此我更新了输出。)

./

(我在http://docopt.org/找到了usage: test.R [-L <low> -H <high>] options: -h, --help Shows this screen -L <low>, --low <low> Passes low risk investiment -H <high>, --high <high> Passes high risk investiment 的要求。我发现他们的interactive docopt demo工作得非常好。)