每组构建多个模型
building multiple models per group
我想对我的数据进行分组,然后每组构建两个线性模型,收集结果,并使用 broom 总结模型参数,但我遇到了一个我似乎无法理解的无限递归错误.这是代码:
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个模型,所以我不明白为什么我会打这么深的嵌套循环?
我在 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)
我想对我的数据进行分组,然后每组构建两个线性模型,收集结果,并使用 broom 总结模型参数,但我遇到了一个我似乎无法理解的无限递归错误.这是代码:
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个模型,所以我不明白为什么我会打这么深的嵌套循环?
我在 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)