[Lenguajes: R]
Problema
En R las funciones se guardan en variables, por ejemplo, una función que simplemente imprima su argumento podría darse pormiFun <- 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"
No hay comentarios.:
Publicar un comentario