如何结合lapply与dlply对数据框列表批量运行分组线性回归
数据框列表批量分组线性回归实现方案
兼容原有dlply用法的实现
直接通过基础函数lapply()遍历数据框列表,将每个元素传入你已掌握的dlply逻辑即可:
library(plyr) # 批量执行分组回归 result_list <- lapply(iris_list, function(df) { dlply(df, "Species", function(x) lm(Sepal.Length ~ Sepal.Width, data = x)) })
结果结构说明
- 返回值
result_list为嵌套列表,第一层对应iris_list的三个输入数据框,result_list[[n]]就是第n个数据框的回归结果,和你单数据框运行得到的test结构完全一致 - 第二层对应分组的Species类别,调用
result_list[[1]][["setosa"]]即可取出第一个数据框中setosa分组的拟合模型
可选tidyverse实现(方便后续结果批量处理)
如果需要后续批量提取回归系数、拟合指标等,可使用tidyverse生态函数实现,更便于后续结果整理:
library(tidyverse) library(broom) result_tidy <- map(iris_list, function(df) { df %>% group_by(Species) %>% nest() %>% mutate( model = map(data, ~lm(Sepal.Length ~ Sepal.Width, data = .x)), # 可直接生成规整的系数表、拟合指标表,按需保留 coef_info = map(model, tidy), fit_info = map(model, glance) ) })
内容的提问来源于stack exchange,提问作者Lelleo
相关产品推荐
相关产品推荐

