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