複数の許可された引数の値のうちの最初のもの以外を、デフォルト値として宣言するにはどうすればよいですか(値が渡されなかった場合)。match.argのenum-alike引数:最初の要素以外の要素をデフォルト値として選択するにはどうすればよいですか?
library(stats)
center <- function(x, type = c("mean", "median", "trimmed")) {
type <- match.arg(type)
switch(type,
mean = mean(x),
median = median(x),
trimmed = mean(x, trim = .1))
}
values <- c(100, 120, 200)
center(values, "median")
# [1] 120
center(values, "mean")
# [1] 140
# uses the first value "mean" as the default!
center(values)
# [1] 140
可能であれば、デフォルト値を明示的(表示可能)にするために、関数シグネチャのデフォルト値を見たいと思います。 g。 (非動作擬似コード!)を使用して、2番目の要素をデフォルト値にします。
center <- function(x, type = c("mean", "median", "trimmed")[2]) {...
他の提案も歓迎です!
PS:私は最初の位置に常にデフォルト値を入れることができますが、リスト内の論理的な順序がある場合、私は例えばpayment.frequency = c("monthly", "quarterly", "semi-annually", "annually")
(それを維持することを好む
@RichScriven:center(値)をコールしたいが、関数declのデフォルト値として2番目の値を指定したいaration(呼び出しではない)。 –