Comment faire correspondre les fonctions de r

Lorsque vous utilisez des fonctions comme arguments dans R, il est parfois nécessaire de faire correspondre les fonctions. Cela signifie également que si vous avez un objet avec le même nom que la fonction que vous souhaitez utiliser, toute cette construction ne fonctionnera pas. Supposons que vous ayez l'idée pas si intelligent de créer un vecteur avec le gain relatif de quelques tours de poker comme ceci:

> Tour lt; - c (0,48, -0.52,1.88)

Si vous avez essayé d'appeler addPercent () avec le AMUSANT argumentation sur ce vecteur, vous obtiendrez l'erreur suivante:




> AddPercent (rond, FUN = round) Erreur dans addPercent (rond, FUN = round): Impossible de trouver la fonction "FUN"

Au lieu de passer le code de la rond fonction, R passe le vecteur rond comme le AMUSANT argument. Pour éviter ce genre de problèmes, vous pouvez utiliser une fonction spéciale, match.fun (), dans le corps du addPercent (), comme ça:

addPercent lt; - la fonction (x, mult = 100, FUN, ...) {FUN lt; - match.fun (FUN) pour cent lt; - FUN (x * mult, ...) de pâte (pour cent, "%", SEP = "")}

Cette fonction va chercher une fonction qui correspond au nom rond et copier ce code dans la AMUSANT argument de la place du vecteur rond. Comme un bonus supplémentaire, match.fun () vous permet également d'utiliser un objet de caractères comme argument, aussi spécifier FUN = "round" fonctionne désormais ainsi.

Toutes les fonctions natives R utilisent match.fun () à cette fin, et il est recommandé pour vous de faire la même chose si vous écrivez du code qui sera utilisé par d'autres personnes. Mais les fonctions passant fonctionne très bien sans l'aide match.fun () ainsi, aussi longtemps que vous utilisez des noms sensibles pour les autres objets dans votre espace de travail.


» » » » Comment faire correspondre les fonctions de r