5

Rでコマンドラインオプションを処理するパッケージはありますか?

私は知ってcommandArgsいますが、それはあまりにも基本的です。その結果は基本的にargcand argvinと同等ですが、 inやinのように、Cその上に何かが必要です。boost::program_optionsC++GetOptions::Longperl

特に、許可されているオプションを事前に指定しておき、ユーザーがそれ以外のオプションを指定した場合はエラー メッセージを表示するようにしたいと考えています。

呼び出しは次のようになります (ユーザー オプション --width=32 --file=foo.txt を使用):

R --vanilla --args --width=32 --file=foo.txt < myscript.R

または、Rscript使用されている場合:

myscript.R --width=32 --file=foo.txt 

(「自分で書いたらどうだ、そんなに難しくない」などとは言わないでください。他の言語でも、自分で書く必要はありません。:)

4

2 に答える 2

8

getoptRの場合

于 2009-07-10T15:53:07.160 に答える
2

組み込みソリューションのeval付きのcommandArgs はどうですか?

test.R

## 'trailingOnly=TRUE' means only parse args after '--args'
args=(commandArgs(trailingOnly=TRUE))

## Supply default arguments
if(length(args)==0){
    print("No arguments supplied.")
    ##supply default values
    a = 1
    b = c(1,1,1)
}else{
    for(i in 1:length(args)){
         eval(parse(text=args[[i]]))
    }
}
print(a*2)
print(b*3)

そしてそれを呼び出す

R CMD BATCH --no-save --no-restore '--args a=1 b=c(2,5,6)' test.R test.out

もちろん、 evalを使用した場合の通常の注意事項が適用されます。

恥知らずにこのブログ投稿から盗みました。

于 2010-01-26T11:10:28.230 に答える