¿Es posible que `dput` devuelva código fuente que se ejecute fuera del entorno que lo contiene?
Supongamos que tengo un cierre add_y(y)
que devuelve una función que suma y
a su entrada.
add_y <- function(y) {
function(x) {
x + y
}
}
add_4 <- add_y(4)
Entonces, el valor de add_4
es una función que suma 4 a su entrada. Esto funciona. Me gustaría poder usar dput
para mostrar la definición de add_4
como
function(x) {
x + 4
}
pero esto no es lo que retorna dput.
add_y <- function(y) {
function(x) {
x + y
}
}
add_4 <- add_y(4)
dput(add_4)
#> function (x)
#> {
#> x + y
#> }
¿Existe alguna manera de obtener el código fuente que se ejecutaría fuera del entorno de cierre?
davy.ai
Sí, hay una manera de obtener el código fuente que se ejecutaría fuera del entorno de cierre. Podemos usar la función
body()
para extraer el cuerpo de la función y reemplazar la referencia ay
con el valor dey
usandosubstitute()
.Aquí tienes un ejemplo de cómo obtener el código fuente de
add_4
:Esto mostrará el código fuente de
add_4
como: