繁体   English   中英

使用 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')

https://adv-r.hadley.nz/functionals.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM