我正在学习 Hadley Wickham 的《R数据科学》第25章“多模型”,https://r4ds.had.co.nz/many-models.html,但在重新创建25.2.2节中的示例时遇到了问题。
这是我目前拥有的(以及有效的)内容:
require(gapminder); require(tidyverse); require(broom); require(modelr)
by_country <- gapminder %>% group_by(country,continent) %>% nest()
head(by_country)
# A tibble: 6 x 3
country continent data
<fct> <fct> <list>
1 Afghanistan Asia <tibble [12 × 4]>
2 Albania Europe <tibble [12 × 4]>
3 Algeria Africa <tibble [12 × 4]>
4 Angola Africa <tibble [12 × 4]>
5 Argentina Americas <tibble [12 × 4]>
6 Australia Oceania <tibble [12 × 4]>
然后定义lm()
应用于每个国家的数据集:
country_model <- function(df) {
lm(lifeExp ~ year, data = df)
}
然后下一行不起作用:
by_country <- by_country %>%
mutate(model = map(data,country_model))
带有错误消息
Error in eval(predvars, data, env) : object 'lifeExp' not found
尽管在我看来,我所写的内容与Hadley的章节中出现的内容相同,但我不确定这是否是最近出现的问题,因为显然有人遇到了一个例子的问题:https://github.com/hadley/r4ds/issues/766(没有解决方案)。任何帮助将不胜感激!
lm
对象的列表列。不过我认为我的更新可能有点落后了。 - camillesessionInfo()
的输出是什么? - Aurèlerequire
,即library(gapminder) library(tidyverse) library(broom) library(modelr)
。 - Vitali Avagyandplyr
和purrr
版本过旧,请尝试升级。请注意,由于tidyverse
的快速发展和其内部变化,曾经有效的代码可能会失效,而新的代码也可能无法正常工作。这是 tidy 环境面临的挑战之一。 - Parfait