¿Alguien sabe cómo escribir una función F que toma una llamada de función (digamos, mean (x = 1:10)) como argumento, y devuelve solo el nombre de la función que se invoca (media)?extrayendo un nombre de llamada de función de una llamada a función
Mis mejores intentos realizados hasta ahora se resumen a continuación
(function(x1){
return(deparse(substitute(x1)))
})(mean(x = 1:10))
### 'mean(x = 1:10)'
Cambio x1 (la llamada de función) a una expresión antes de-análisis no parece ayudar mucho: que devuelve
(function(x1){
return(deparse(as.expression(substitute(x1))))
})(mean(x = 1:10))
# "expression(mean(x = 1:10))"
Si es posible, me gustaría poder usar funciones anónimas como argumento también, así que F debe devolver (función (x) impresión (x)) para (función (x) impresión (x)) (1) Si necesita alguna aclaración, siéntase libre de comentar. Gracias.
edición1: me gustaría evitar buscar el primer paréntesis y suprimir el código anterior (para "mean (x = 1:10)" que devolvería "mean"), como " malo (Fun_nAme" es en realidad un nombre de función legal en R.
pregunta contestada: la respuesta de Josh O'Brien era perfecto: la función F que satisface las condiciones anteriores se
F <- function(x) deparse(substitute(x)[[1]])
funciona muy bien para operadores binarios, funciones estándar y funciones anónimas.