R语言中如何对多个同结构数据表循环执行lm线性回归命令
R语言批量对多数据集执行相同回归的实现方案
核心思路
将所有结构一致的数据集存入同一个列表,再对列表迭代执行回归命令,所有回归结果会统一存在结果列表中,无需重复调用lm()。
可复现示例适配(cars系列数据集)
基础R实现(无需额外安装包)
# 构造示例数据 cars1 = cars cars2 = cars*2 cars3 = cars*3 # 批量匹配目标数据集存入列表 df_list <- mget(ls(pattern = "^cars\\d$")) # 批量执行回归,结果存入lm_results列表 lm_results <- lapply(df_list, function(df) { lm(speed ~ dist, data = df) })
tidyverse风格实现(适配后续结果批量整理)
library(purrr) library(broom) # 批量执行回归 lm_results <- map(df_list, ~ lm(speed ~ dist, data = .x)) # 可直接将所有回归的系数结果合并为统一数据框 coef_df <- map_dfr(lm_results, tidy, .id = "数据集名称")
适配你的季度数据集场景
仅需修改数据集匹配规则即可:
# 方式1:正则匹配批量抓取所有符合命名规则的数据集 df_list <- mget(ls(pattern = "^data_20\\d{2}q[12]$")) # 方式2:手动构造列表(适合环境变量复杂的场景,避免误抓) df_list <- list( data_2018q1 = data_2018q1, data_2018q2 = data_2018q2, data_2019q1 = data_2019q1, data_2019q2 = data_2019q2 ) # 批量执行目标回归 lm_results <- lapply(df_list, function(df) { lm(VD4020 ~ V2010 + V2007, data = df) })
常用结果操作
- 查看单个数据集的回归结果:
lm_results$data_2018q1 - 批量提取所有回归的R平方:
sapply(lm_results, function(x) summary(x)$r.squared) - 批量提取所有回归的系数:
lapply(lm_results, coef)
内容的提问来源于stack exchange,提问作者Lelleo
相关产品推荐
相关产品推荐

