1

私は通常、Python では argparse を使用し、R では docopt を使用します。argparse に欠けていて、docopt でまだ理解していない機能の 1 つは、各引数に必要なデータ型を指定する機能です。たとえば、argparse では、次を使用して整数入力が必要です。

parser.add_argument("square", help="display a square of a given number",
                type=int)

docopt/R では、特定のデータ型の要求に関するドキュメントが見つかりません。

-s <square>, --square=<square>   display a square of a given number #additional option to require integer input?

Python バージョンの docopt GitHub リポジトリには、これがベース docopt の一部ではなく、Python のソリューションを提供していることを示しているように見えるクローズドな問題がありますが、これは R に直接適用できません。 Rでdocoptを使用して引数入力を検証する方法は?

4

2 に答える 2

1

utils::type.convertデフォルトを設定してから決定クラス/タイプを使用するため、これが十分にエレガントかどうかはわかりません

"Usage: my_program.R [-hson FILE] [--quiet | --verbose] [INPUT ...]

-h --help        show this 
-s --sorted      sorted output
--coefficient=K  [default: 2.95] The K coefficient 
--numSim=K       [default: 200] number of simulations 
--output=FILE    [default: test.txt] Output file 
--directory=DIR  [default: ./] Some directory 
-o FILE          specify output file [default: ./test.txt]
--quiet          print less text
--verbose        print more text" -> doc
opts <- docopt(doc, "-s --quiet")
str(opts)

newopts <- lapply(opts, function(x) utils::type.convert(as.character(x),as.is=T))
(definedClasses <- unlist(lapply(newopts, typeof)))

プログラムを実行しているときに、これに対して入力をテストできますdefinedClasses

getoptand optparse/argparseパッケージと、この SO ポストParsing command line arguments in R scriptsもチェックしてください。

参考文献:

http://docopt.org

http://rgrannell1.github.io/blog/2014/08/04/command-line-interfaces-in-r

http://docopt.readthedocs.org/en/0.2.0/

于 2016-04-19T07:50:44.497 に答える