Problema

En R las funciones se guardan en variables, por ejemplo, una función que simplemente imprima su argumento podría darse por

miFun <- function(x) {print(x)}
# La ejecutamos así
miFun("cualquier cosa")
## [1] "cualquier cosa"

Puede ocurrir, sin embargo, que el nombre de la función esté contenida, como un string de caracteres, en otra variable:

nombreF <- "miFun"

Supongamos que no se tiene acceso a la variable miFun, sino únicamente a la variable nombreF. ¿De qué manera se podría ejecutar la función a partir de eso? Esto es, tener algo como:

EJECUTA(nombreF)("algún argumento")
## [1] "algún argumento"

Solución

Para resolver este problema, recurriremos a dos funciones primitivas del lenguaje, assign() y get(), que permiten asignar variables, y extraer valores de variables a partir de sus nombres dados como strings de caracteres:

# La asignación 
x <- 3
# Es lo mismo que:
assign("x", 3)
# La extracción de un valor:
x
## [1] 3
# Es lo mismo que
get("x")
## [1] 3

Por otra parte, la sintaxis de este lenguaje permite ejecutar una función a partir de la variable que ha servido para definirla, o a partir del nombre de la variable dada como un string de caracteres constante. Así,

miFun("cualquier cosa")
## [1] "cualquier cosa"

tiene el mismo resultado que:

"miFun"("cualquier cosa") # NOTE las comillas en el nombre de la función
## [1] "cualquier cosa"

Combinando todo esto, llegamos al resultado deseado de ejecutar la función a partir de una variable que contiene su nombre (nombreF), de la siguiente manera:

get(nombreF)("cualquier cosa") 
## [1] "cualquier cosa"