Dans de nombreuses procédures de R , l'un des arguments, souvent de nom FUN, est une fonction. Dans ce cas l'aide spécifie :
procedure( arg1, arg2, FUN, ...)
1) Si la fonction n'a qu'un argument, on peut écrire par exemple si la fonction est le cosinus et que corps de la fonction contient FUN( arg1, ...) :
procedure( arg1=val1, arg2=val2, FUN=cos)
De ce fait, quand R exécute la fonction, il calculera cos( arg1).
2) Si la fonction a plusieurs arguments, il faut aussi les passer, c'est le rôle du ... Par exemple, supposons que la fonction est la moyenne mean, que l'argument 1 est un vecteur de valeur contenant des NA, on veut calculer la moyenne en supprimant mes NA et et les 10% des valeurs extrêmes, on doit alors utiliser les arguments supplémentaires na.rm et trim. On appellera alors la procédure comme suit :
procedure( arg1=val1, arg2=val2, FUN=mean, trim=0.1, na.rm=TRUE)
R remplacera ... par les arguments supplémentaires et calculera mean( arg1, trim=0.1, na.rm=TRUE)
3) A la place d'une fonction nommée pour FUN, on peut utiliser une fonction anonyme. On la codera alors par
x étant son premier argument. Elle peut aussi avoir plusieurs arguments supplémentaires qui seront à la suite de x. Sa déclaration se fera à la suite du FUN et son appel de la même manière que les fonctions nommées comme je le fais dans mon code.
4) Comme R peut passer les arguments par position ou par nom, si FUN se trouve à la bonne position comme dans mon code, il est inutile de nommer l'argument FUN par contre les arguments supplémentaires de la fonction doivent toujours être nommés.
Partager