J'ai fonctions f1
et f2
qui prennent une fonction comme argument, par exemple:R: trouver le nom original d'une fonction passée comme argument
f1 <- function(FUN) {
...
}
f2 <- function(FUN) {
f1(FUN=FUN)
}
De l'intérieur fonction f1
, je dois retrouver l'original nom de la fonction transmise à f2
, par exemple "myFunc"
, mais pas "FUN"
.
Fondamentalement pouvons-nous imaginer une fonction f1
de sorte que f2(f1(mean))
renvoie "mean"
? Si FUN
est anonyme, nous pouvons par exemple retourner NULL
ou NA
.
Existe-t-il un moyen facile/standard de le faire dans R? J'ai essayé de rechercher manuellement le code de fonction identique, en utilisant (mais il est pas très propre et je suis à la recherche d'une meilleure solution)
fn = unlist(as.list(lsf.str(envir=.GlobalEnv)))
for (f in fn) {
if (setequal(paste(body(myFunc)),paste(body(f)))) {
return(f)
}
}
Il n'y a pas assez d'informations ici. Vous devez créer un exemple reproductible. Si 'FUN' est censé être une fonction, il pourrait être anonyme. Que devrait-on retourner dans un tel cas? – Roland
@Roland Fondamentalement pouvons-nous imaginer une fonction 'f1' de sorte que' f2 (f1 (mean)) 'renvoie" mean "? Si FUN est anonyme, on peut par exemple retourner NULL ou NA. J'ai modifié la question avec vos commentaires – RockScience