在使用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
运行时,它都会警告我正在加载方法包并且不返回任何其他内容。
答案 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工作得非常好。)