Comment puis-je obtenir les formals (arguments) d'un objet d'appel? formals () ne semble fonctionner qu'avec des fonctions.
Réponses:
5 pour la réponse № 1Eh bien, un appel ne avoir formels, seuls les arguments réels ... La différence étant qu'une fonction comme foo <- function(x, y, ..., z=42)
peut être appelé avec réel des arguments comme foo(42, bar=13)
.
... Mais obtenir les arguments peut être fait comme ceci:
a <- call("foo", a=42, 13)
as.list(a)[-1]
#$a
#[1] 42
#
#[[2]]
#[1] 13
... d'autre part, vous pouvez généralement (pas toujours) trouver la fonction réelle et y trouver les formels suivants:
a <- quote(which(letters=="g"))
formals(match.fun(a[[1]]))
#$x
#
#$arr.ind
#[1] FALSE
#
#$useNames
#[1] TRUE
Ici, vous devez ajouter un traitement des erreurs si la fonction ne peut pas être trouvée (comme pour l'appel à foo
au dessus)...