如何为1000个data.frame计算线性回归斜率及回归方程?
批量处理1000个data.frame的线性回归分析
假设你的1000个data.frame已经整理到一个列表(命名为df_list)中,如果还没整理,可以用以下代码把分散的df1到df1000存入列表:
# 生成包含1000个data.frame的列表示例(已有列表可跳过) set.seed(123) # 设置随机种子保证结果可复现 df_list <- lapply(1:1000, function(i) { data.frame(a=rnorm(20, 0,1), b=rnorm(20,1,2), c=rnorm(20, 2, 1), d=rnorm(20, 1,2)) }) # 若已有分散的df1到df1000,用以下代码合并到列表 df_list <- mget(paste0("df", 1:1000))
接下来定义函数,处理单个data.frame并提取斜率和回归方程:
get_reg_result <- function(df) { # 执行线性回归:以b为因变量,d为自变量 model <- lm(b ~ d, data = df) # 提取截距和斜率系数 coeffs <- coef(model) intercept <- round(coeffs[1], 4) slope <- round(coeffs[2], 4) # 构建回归方程字符串 eqn <- paste0("b = ", intercept, " + ", slope, "*d") # 返回结果 list(slope = slope, equation = eqn) }
批量应用函数到所有data.frame,得到结果列表:
reg_results <- lapply(df_list, get_reg_result)
最后整理成便于查看的结构化结果:
result_df <- do.call(rbind, lapply(reg_results, function(x) { data.frame(slope = x$slope, equation = x$equation) })) # 添加序号对应原data.frame result_df$df_index <- 1:nrow(result_df) # 查看前5个结果示例 head(result_df)
关键说明
- 斜率对应回归模型中自变量
d的系数,存储在result_df$slope列 - 回归方程以字符串形式存储在
result_df$equation列,直接展示每个模型的拟合公式 - 若需要更高精度的系数,可去掉代码中的
round()函数保留原始计算值
内容的提问来源于stack exchange,提问作者Rahul
相关产品推荐
相关产品推荐

