デフォルトの引数の一部を置き換えるラッパー関数を作成したいと思います。ここでR:省略記号を使用する(...)
私は苦労してる問題の核心:今
Error in localWindow(xlim, ylim, log, asp, ...) :
formal argument "cex" matched by multiple actual arguments
コンテキストのビットを。
myplot <- function(x, ...) {
plot(x, cex= 1.5, ...)
}
私は上記のエラーを取得しますmyplot(1:10, cex= 2)
を呼び出す場合:私はこのようなプロットのためのラッパー関数を定義するとします。私は、リストに
l <- list(...)
を...
を回すことができ、その後、私はどのように私は戻って省略記号引数にこのリストを「挿入」することができ、しかし
if(is.null(l[["cex"]])) l[["cex"]] <- 2
を行うことができます知っていますか? (私はこれが動作しません知っている)ような何か:
... <- l
編集:私は(@Thomasからの回答で提案されているように)myplot
定義でデフォルトを使用することができますが、私はしたくない:関数インタフェース複雑になる。私はそのようにヘルパー関数を定義することができると思います:
.myfunchelper <- function(x, cex= 2.0, ...) {
plot(x, cex= cex, ...)
}
myfunc <- function(x, ...) {
.myfunchelper(x, ...)
}
しかし、(ⅰ)それはあまりエレガントであると、(ii)私の好奇心を満たしていません。
ええ、これは私が避けたいものです。実際の問題は複雑で、関数呼び出し定義にデフォルトを置くことは望ましくありません。すでに引数が多すぎます。 – January
以下の回答に基づいて更新しました:http://stackoverflow.com/questions/7028385/can-i-remove-an-element-in-dot-dot-dot-and-pass-it-on/7028786# 7028786 – Thomas