Построение нескольких моделей на группу

Я хотел бы сгруппировать свои данные, затем построить две линейные модели для каждой группы, собрать результаты и использовать метлу для суммирования параметров модели, но у меня бесконечная ошибка рекурсии, которую я, похоже, не могу понять. Вот код:

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 модели, так что я не понимаю, почему у меня такой глубокий вложенный цикл?

1 ответ

Я нашел комментарий на github, который исправил мою проблему здесь

Фиксированная версия кода выглядит следующим образом:

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)
Другие вопросы по тегам