2011-12-20 62 views
14

私は今、私は、ユーザーがこれらの引数を指定していないという場合は、プロットのためのいくつかのデフォルトを提供したい機能に避け引数の重複は(...)

somefun <- function(someparameters , ...) { plot(stuff, ...)} 

を持っています。 (すなわち、xlab="")。

デフォルトのプロットオプションを提供するにはどうすればよいのですか?ユーザーがこれらの引数をオーバーライドできるようにするにはどうすればよいですか?同じ引数が2回入力された場合、Rは複数の実際の引数でマッチした仮引数を返します。

私は関数を使用して、これらすべてのオプションに

somefun <- function(someparameters, main, xlab, ylab, xlim....) 

を渡すことができることを承知していますが、私はむしろそれをしないだろう。

これを達成するには簡単な解決策がありますか?

+0

'somefun <にご異議は何ですか - 、機能(someparamenters、メイン、xlab = ""、...){プロット(もの、xlab ... )} '?私はそれがまさにあなたが望むものだと思ったでしょう。 – Henry

+0

それはきれいではありません。このコードをパッケージに入れると、パラメータがドキュメントに表示されます。 – LostLin

+1

ユーザーはドキュメントにこれらのパラメータが必要であると提出するので、Henryの提案が優先されます。 – Aaron

答えて

19

次のように使用modifyListを試してみてください:

f <- function(x, ...) { 
    defaults <- list(xlab = "x", ylab = "y") 
    args <- modifyList(defaults, list(x = x, ...)) 
    do.call("plot", args) 
} 
+0

あなたの答えに感謝します。しかし、どのように私は今すぐパラメータとして動作するようにリストを取得するのですか? 'plot(1,2、args)'はこの場合正しく動作しません。 – LostLin

+1

@Ellipsisそれは 'do.call'の魔法です:それはリストとして引数を取ります。 '?do.call'も参照してください。 +1は 'modifyList'のために、それを知らなかった。私は 'match.call()'の結果を扱っていたでしょうが、これはこれほどきれいではありません。 –

+1

@Ellipsis、私は 'plot'の例を与えるように変更しました。 –

関連する問題