/ / R - Récupère les formulaires de l'objet d'appel - r

R - Récupère les formulaires de l'objet d'appel - r

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 № 1

Eh 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)...