R 函数内部无法识别的数据
Data not recognized inside the function in R
我想知道为什么我的 data123
在下面的 allEffects(fit2, ...)
调用中没有被识别?有解决办法吗?
我的“R版本4.0.0(2020-04-24)”,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' not recognized HERE
}
#----------EXAMPLE OF USE:
foo(m1)
# Error during wrapup: object 'data123' not found
allEffects
函数对环境非常挑剔。您需要确保要使用的数据集与您用于模型的公式处于相同的环境中。尝试
foo <- function(fit,...) {
data123 <- eval(fit$call$data)
formula123 <- eval(fit$call$formula)
environment(formula123) <- environment()
fit2 <- lm(formula123, data = data123)
allEffects(fit2, ...)
}
foo(m1)
这里我们显式提取公式并将其环境重置为定义 data123
的函数体。
我想知道为什么我的 data123
在下面的 allEffects(fit2, ...)
调用中没有被识别?有解决办法吗?
我的“R版本4.0.0(2020-04-24)”,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' not recognized HERE
}
#----------EXAMPLE OF USE:
foo(m1)
# Error during wrapup: object 'data123' not found
allEffects
函数对环境非常挑剔。您需要确保要使用的数据集与您用于模型的公式处于相同的环境中。尝试
foo <- function(fit,...) {
data123 <- eval(fit$call$data)
formula123 <- eval(fit$call$formula)
environment(formula123) <- environment()
fit2 <- lm(formula123, data = data123)
allEffects(fit2, ...)
}
foo(m1)
这里我们显式提取公式并将其环境重置为定义 data123
的函数体。