本文介绍了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中的函数内部无法识别的数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-27 01:59