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

使用循环拟合不同自变量的线性回归模型及R代码报错求解

错误原因
  • 取列方式不符合lm要求:R中使用单中括号[]提取数据框列时,返回的是单列数据框(本质为list类型),而lm()的公式要求传入向量类型的变量,因此触发类型报错。
  • append()函数用法错误:R的append()不会原地修改原向量,而是返回拼接后的新向量,你没有将返回值赋值给原存储向量,循环结束后结果不会被保存。
  • 补充注意:你需要提前初始化两个空向量用来存储结果,否则循环中调用append()时会找不到对象报错。
循环实现的修正代码
# 第一步:初始化空存储向量
coeff_value_vector <- c()
RCs_sign_vector <- c()

# 第二步:循环拟合单变量回归
for (x in 1:7) {
  # 动态构造回归公式,直接调用数据框内的列,避免类型错误
  fit <- lm(
    formula = reformulate(names(FAA_unique_with_duration_filtered)[x], response = "distance"),
    data = FAA_unique_with_duration_filtered
  )
  # 提取非截距项系数
  current_coef <- coef(fit)[2]
  # 拼接结果到存储向量,必须赋值回原对象
  coeff_value_vector <- append(coeff_value_vector, current_coef)
  RCs_sign_vector <- append(RCs_sign_vector, sign(current_coef))
}
更简洁的向量化实现(无需显式循环)

如果追求代码简洁性,可以用sapply()批量处理,执行效率也更高:

# 提取前7列作为自变量集
predictors <- FAA_unique_with_duration_filtered[, 1:7]
# 批量拟合模型提取非截距项系数
coeff_value_vector <- sapply(predictors, function(col) {
  coef(lm(FAA_unique_with_duration_filtered$distance ~ col))[2]
})
# 直接生成符号向量
RCs_sign_vector <- sign(coeff_value_vector)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 08:45:06