每组建立多个模型

问题描述 投票:0回答:1

我想对我的数据进行分组,然后为每个组构建两个线性模型,收集结果,并使用扫帚来总结模型参数,但我有一个无法理解的无限递归错误。这是代码:

library(dplyr)
library(tidyr)
library(broom)

mtcars %>% 
group_by(am) %>% 
dplyr::do(simple_fit =  lm(mpg ~ disp, data = .), 
          complex_fit = lm(mpg ~ disp + hp, data = .)) %>% 
ungroup()
gather(model_type, model, -am) %>% 
broom::tidy(model)

这会导致此错误:

Error: evaluation nested too deeply: infinite recursion / options(expressions=)?

在这个例子中只有4个模型,所以我不明白为什么我要打这么深的嵌套循环?

r dplyr tidyr lm broom
1个回答
2
投票

我发现了一个关于github的评论,修复了我的问题here

固定版本的代码如下:

mtcars %>% 
group_by(am) %>% 
dplyr::do(simple_fit = lm(mpg~disp, data = .), 
          complex_fit = lm(mpg ~ disp + hp, data = .)) %>% 
ungroup() %>% 
gather(model_type, model, -am) %>% 
rowwise() %>% 
broom::tidy(model)
© www.soinside.com 2019 - 2024. All rights reserved.