Datos no reconocidos dentro de la función en R.
Me pregunto por qué mi data123
no es reconocido dentro del llamado a allEffects(fit2, ...)
a continuación. ¿Existe alguna solución para esto?
Mi máquina utiliza “R versión 4.0.0 (2020-04-24)” en Windows 10.
Error object 'data123' not found
library(effects)
m1 <- lm(mpg ~ hp + cyl, data = mtcars)
foo <- function(fit,...) {
data123 <- eval(fit$call$data)
fit2 <- lm(fit$call$formula, data = data123)
allEffects(fit2, ...) #### 'data123' no es reconocido AQUÍ
}
<h1>----------EJEMPLO DE USO:</h1>
foo(m1)
<h1>Error durante wrapup: object 'data123' not found</h1>
davy.ai
El problema con el código anterior es que el objeto
data123
está definido dentro del cuerpo de la funciónfoo
, y no es reconocido fuera de ella debido a las reglas de alcance de variables en R.Para solucionarlo, una forma es definir
data123
fuera de la funciónfoo
, antes de su llamado. Luego, pasardata123
como argumento a la funciónfoo
.Aquí hay un ejemplo de cómo se podría modificar el código:
Tenga en cuenta que eliminamos el
eval
innecesario y lo reemplazamos conm1$call$data
. Además, eliminamos la asignación dedata123
dentro defoo
y lo pasamos como argumento. Finalmente, eliminamos el argumento no utilizado...
en la funciónfoo
.