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

R语言批量对多个dataframe执行回归的for循环问题求解

原代码错误点

  • 不需要用lapply遍历dataframe每一列做回归,每个dataframe仅需拟合1次三因子模型即可
  • R中append()函数不会修改原列表,需要将执行结果重新赋值给存储列表才会生效
  • 建议给列表设置对应名称,方便后续快速匹配每只标的的回归结果

修改后可运行代码

dflist <- list(cvx,csco,trv,unh,gs,nke,v,aapl,wba)
# 给列表元素命名,后续直接用标的名调取结果
names(dflist) <- c("cvx","csco","trv","unh","gs","nke","v","aapl","wba")

# 初始化两个存储列表,分别存完整回归摘要、系数结果
fama_summaries <- list()
fama_coefs <- list()

for (name in names(dflist)) {
  df <- dflist[[name]]
  # 计算回归所需变量
  ri_rf <- df[,1] - df[,5]
  capm <- df[,2] - df[,5]
  # 拟合三因子模型
  fama_model <- lm(ri_rf ~ smb + hml + capm, data = df)
  # 分别存储摘要和系数
  fama_summaries[[name]] <- summary(fama_model)
  fama_coefs[[name]] <- coef(fama_model)
}

结果调用方式

  • 查看单标的完整回归结果:fama_summaries[["aapl"]]
  • 提取单标的显著性检验系数矩阵:fama_summaries[["aapl"]]$coefficients
  • 合并所有标的的系数为统一数据框:do.call(rbind, fama_coefs)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 00:36:07