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"
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"