You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言如何批量遍历CSV文件循环执行线性回归并保存系数结果

实现思路
  • 提前将R工作目录切换到存放所有CSV文件的文件夹,统一获取所有符合命名规则的CSV文件路径,同时修正默认字符串排序的逻辑,保证文件读取顺序和name1、name2……的命名顺序完全一致
  • 梳理单文件处理逻辑:读入CSV数据 -> 运行线性回归模型 -> 提取需要的回归指标(截距、自变量系数、模型拟合优度、系数显著性p值等)
  • 遍历所有文件批量执行上述处理逻辑,将每个文件的回归结果逐行汇总到同一张结果表,最终导出为汇总文件即可
参考代码

运行前把代码里的columnX、columnY替换成你CSV里实际的自变量、因变量列名即可。

# 若未安装tidyverse,先运行下一行代码安装
# install.packages("tidyverse")
library(tidyverse)

# 批量获取所有name开头带数字的CSV文件,按文件名里的数字升序排列
all_csv_files <- list.files(pattern = "^name\\d+\\.csv$") |> 
  tibble(file_path = .) |> 
  mutate(file_index = as.numeric(str_extract(file_path, "\\d+"))) |> 
  arrange(file_index) |> 
  pull(file_path)

# 初始化空结果表,按需增减要存的指标列
result_table <- tibble(
  source_file = character(),
  intercept = numeric(),
  x_slope = numeric(),
  r_squared = numeric(),
  x_p_value = numeric()
)

# 循环遍历每个文件跑回归
for (file in all_csv_files) {
  # 读入当前CSV
  df <- read.csv(file, fileEncoding = "UTF-8")
  # 拟合线性回归,替换成你自己的列名
  model <- lm(columnY ~ columnX, data = df)
  model_summary <- summary(model)
  
  # 把当前文件的结果追加到总结果表
  result_table <- result_table |> 
    add_row(
      source_file = file,
      intercept = coef(model)[[1]],
      x_slope = coef(model)[[2]],
      r_squared = model_summary$r.squared,
      x_p_value = model_summary$coefficients[2,4]
    )
}

# 导出所有回归的汇总结果
write.csv(result_table, "线性回归批量结果汇总.csv", row.names = FALSE, fileEncoding = "UTF-8")
注意事项
  • 运行前务必确认工作路径正确,可通过getwd()查看当前路径,通过setwd("你的CSV文件夹本地路径")切换到目标目录
  • 文件名排序做了数值化处理,不会出现字符串排序默认的「name10排在name2前面」的顺序错乱问题,和你文件的命名顺序完全匹配
  • 如果需要提取更多回归指标(比如调整后R²、残差标准误、模型F检验p值),只需要在初始化结果表时新增对应列,在追加结果的部分从model_summary里提取对应值填入即可
  • 要是觉得循环速度慢,可以把循环部分替换为purrr::map_dfr实现,核心逻辑完全一致,运行效率更高

内容的提问来源于stack exchange,提问作者Cucumber

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 11:03:24