Comment puis-je déclarer une valeur autre que la première de plusieurs valeurs d'arguments autorisées comme valeur par défaut (si aucune valeur n'a été transmise)?R enum alike avec match.arg: Comment choisir un élément non-premier comme valeur par défaut?
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
Je voudrais voir la valeur par défaut dans la signature de la fonction, si possible, afin de rendre la valeur par défaut explicite (visible), e. g. (! Pseudo-code non-travail) pour faire le deuxième élément de la valeur par défaut:
center <- function(x, type = c("mean", "median", "trimmed")[2]) {...
D'autres propositions sont également les bienvenus!
PS: Je pourrais mettre la valeur par défaut toujours dans la première position, mais s'il y a un ordre logique dans la liste, je préférerais le garder (par exemple payment.frequency = c("monthly", "quarterly", "semi-annually", "annually")
@RichScriven: Je veux appeler le centre (valeurs) mais je veux spécifier la 2ème valeur comme valeur par défaut dans la fonction decl aration (pas l'appel). –