2016-04-18 7 views
1

私はPythonではargparseを、Rではdocoptを使用します。私がargparseから逃した機能の1つは、docoptでまだ解明していない機能の1つです。それぞれの議論。例えば、argparseでIはdocopt/Rでdocopt - 各argに特定のデータ型が必要です

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

を使用して、整数入力を必要とする、私は、特定のデータ型を必要と約ドキュメントに何かを見つけることができません。

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

あり、これは、ベースdocoptの一部ではないことを示しているようだとPythonのためのソリューションを提供していますdocopt GitHubのレポのPythonのバージョンに閉じissueだが、これはRに直接適用することはできないことはでき誰もがRのdocoptを使って引数の入力を検証するための任意の提案/よりエレガントな方法を提供していますか?

答えて

1

ない、これはそれはあなたがプログラムを実行しているとき、あなたはこのdefinedClassesに対して入力をテストすることができ、クラス/ typeofを

"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))) 

を決定するデフォルト値を設定して、utils::type.convertを使用することを含むように十分なエレガントであれば確認してください。

あなたはまたgetoptoptparse/​​パッケージをチェックアウトする場合がありますし、また、これは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/

+0

ターをあなた、それは興味深い情報です。私はこのアプローチを将来的にいくつか試してみるかもしれません。私は、testthatパッケージを使用して、ユーザーの入力が期待通りのものであることを確認するテストを作成しました。 – AJW

関連する問題