使用 purrr::map() 从多个模型中提取 r.squared
Extract r.squared from multiple models with purrr::map()
我有以下三个线性模型:
models <- mtcars %>%
split(.$cyl) %>%
map(~lm(mpg ~ wt, data = .))
现在我想从所有具有 purrr::map()
的三个模型中提取 r.squared
。
我尝试了以下两种方法,但它们都产生了错误(即“错误:无法将 summaryDefault/table
对象转换为函数”):
models %>%
map(summary) %>%
map_dbl(~.$r.squared)
models %>%
map(summary) %>%
map_dbl("r.squared")
问题是什么,如何解决?
library(tidyverse)
models <- mtcars %>%
split(.$cyl) %>%
map(~lm(mpg ~ wt, data = .))
手动完成你可以做到:
summary(models[[1]])$r.squared
然后使用 map
:
#and in map loop map_dfr
map_dfr(models, ~summary(.)$r.squared)
# # A tibble: 1 x 3
# `4` `6` `8`
# <dbl> <dbl> <dbl>
# 1 0.509 0.465 0.423
或
map_dfr(models, ~ glance(.x) %>%
dplyr::select(r.squared))
# A tibble: 3 x 1
# r.squared
# <dbl>
#1 0.509
#2 0.465
#3 0.423
by_cyl <- split(mtcars, mtcars$cyl)
by_cyl %>%
map(~ lm(mpg ~ wt, data = .x)) %>%
map(summary) %>%
map_dbl('r.squared')
我有以下三个线性模型:
models <- mtcars %>%
split(.$cyl) %>%
map(~lm(mpg ~ wt, data = .))
现在我想从所有具有 purrr::map()
的三个模型中提取 r.squared
。
我尝试了以下两种方法,但它们都产生了错误(即“错误:无法将 summaryDefault/table
对象转换为函数”):
models %>%
map(summary) %>%
map_dbl(~.$r.squared)
models %>%
map(summary) %>%
map_dbl("r.squared")
问题是什么,如何解决?
library(tidyverse)
models <- mtcars %>%
split(.$cyl) %>%
map(~lm(mpg ~ wt, data = .))
手动完成你可以做到:
summary(models[[1]])$r.squared
然后使用 map
:
#and in map loop map_dfr
map_dfr(models, ~summary(.)$r.squared)
# # A tibble: 1 x 3
# `4` `6` `8`
# <dbl> <dbl> <dbl>
# 1 0.509 0.465 0.423
或
map_dfr(models, ~ glance(.x) %>%
dplyr::select(r.squared))
# A tibble: 3 x 1
# r.squared
# <dbl>
#1 0.509
#2 0.465
#3 0.423
by_cyl <- split(mtcars, mtcars$cyl)
by_cyl %>%
map(~ lm(mpg ~ wt, data = .x)) %>%
map(summary) %>%
map_dbl('r.squared')