本文介绍了R中的函数内部无法识别的数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想知道为什么在下面的allEffects(fit2, ...)
调用中无法识别我的data123
?有什么解决办法吗?我的R版本4.0.0(2020-04-24)&q;,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
的函数体。
这篇关于R中的函数内部无法识别的数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!