我正在使用docopt https://github.com/docopt/docopt.RR 的实现。我的脚本有一个命令行选项,其缩写形式为-g
。当我运行我的脚本时,似乎这个参数首先由 R 解释,然后由我的脚本解释。因此,我因为没有为 GUI 指定值而受到批评。我可以阻止 R 尝试使用这些命令行参数吗?
脚本示例:
#!/usr/bin/Rscript
suppressPackageStartupMessages(library(docopt))
"docopt practice script
Usage: foo.R [-g <goodies>]
Options:
-g <goodies>, --goodies=<goodies> Goodies
" -> doc
opts <- docopt(doc)
cat(sprintf("goodies = %s\n", opts$goodies))
这是我运行时发生的情况:
Jennifers-MacBook-Pro-3:scripts jenny$ ./foo.R -g donuts
WARNING: --gui or -g without value ignored
goodies = donuts
如果您将选项的缩写形式从-g
to -j
, the WARNING
消失了……但我有充分的理由使用这封信g
!
正如@krlmlr 所指出的,这个问题与Rscript
(在你的哈希爆炸中)。一种解决方法是使用优秀的提供的功能littler http://dirk.eddelbuettel.com/code/littler.html代替Rscript
。例如,使用#!/usr/bin/Rscript
in foo.R
,我得到了这个问题:
[nathan@nrussell R]$ ./foo.R -g donuts
WARNING: unknown gui 'donuts', using X11
goodies = donuts
替换为#!/usr/local/bin/r
在新脚本中foo2.R
,我得到一个干净的输出:
[nathan@nrussell R]$ ./foo2.R -g donuts
goodies = donuts
看起来您使用的是 OS X 计算机,因此如果您选择安装littler
,请务必注意作者的警告:
在 OS X 上,您可能需要通过configure --program-prefix =“l”来构建它
将其重命名为 lr,因为特定操作系统认为 R 和 r 是相同的
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)