R语言 如何在txhousing数据集中生成model_sum〈- models %>% glance(mod),原来使用的是'glance',但它已不存在

enxuqcxy  于 2023-04-09  发布在  其他
关注(0)|答案(1)|浏览(156)

在威克姆的书中,他使用txhousing数据集,并通过使用broom包中的glance函数生成有问题的 Dataframe 。该函数已被删除,现在在tidyverse中存在glance。然而,你不能简单地用glance替换glance。我一直在努力寻找,但似乎找不到答案。

glimpse(models)

model_sum <- models %>% (mod)

model_sum

出现以下错误:

Error in models %>% (mod) : attempt to apply non-function
sd2nnvve

sd2nnvve1#

看起来你正在看2016年版的“ggplot 2:用于数据分析的精美图形。”http://www.ievbras.ru/ecostat/Kiril/R/Biblio_N/R_Eng/Wickham2016.pdf
ggplot 2书中的current version没有涉及建模,而是将其留给了另一本威克姆的书,这本R for Data Science书更侧重于dplyr和tidyr。
自2016年以来,tidyverse团队已经更新了其中使用的一些方法和语法,因此看起来代码不会再逐字运行。
在2016年的ggplot 2书中,有代码定义了

models <- txhousing %>% 
  group_by(city) %>% 
  do(mod = lm(log2(sales) ~ factor(month), data = ., na.action = na.exclude))

因此models具有mod列。

model_sum <- models %>%
  broom::glance(mod) # I'm using v1.0.1

但是现在这样做会给你一个错误,可以理解的是,这个错误会让人认为glanceglimpse替换了:

Error: There is no glance method for tibbles. Did you mean `tibble::glimpse()`?

问题是,2018年的broom 0.5.0包含了一些突破性的变化,使其在工作方式上更具选择性;它不能再直接在列表列上运行,而是应该使用mutate-map语法。
如果你想在2023年使用tidyverse进行建模,我会关注上面R4 DS链接中的更新方法。它会建议如下:

models2 <- txhousing %>%
  group_by(city) %>%
  nest() %>%
  mutate(mod =    map(data, 
                      ~lm(log2(sales) ~ factor(month),
                      data = ., 
                      na.action = na.exclude)),
         glance = map(mod,
                      broom::glance))

你也可以看看这个有用的小插曲:https://cran.r-project.org/web/packages/broom/vignettes/broom_and_dplyr.html

相关问题