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

R中用自定义函数对数据框多子集拟合线性回归报错如何解决?

报错原因与修正方案

两个报错的核心问题

  • 第一个报错:自定义函数形参为x,但lm函数的data参数用了函数内部不存在的.占位符,同时数据集菌落数列名为CFU_mean,你写成了CFU,变量名不匹配。
  • 第二个报错:do()要求函数返回值为数据框格式,你之前直接返回coef()生成的数值向量,类型不符合要求。

可直接运行的实现代码

# 自定义回归函数,返回数据框格式的结果
regressions <- function(x) {
  # 拟合线性模型
  model <- lm(CFU_mean ~ minutes, data = x)
  # 提取回归系数
  coeff <- coef(model)
  # 提取p值:summary返回的系数表第四列为p值
  p_value <- summary(model)$coefficients[,4]
  # 构造符合要求的输出数据框
  data.frame(
    intercept = coeff[["(Intercept)"]],
    minutes_coef = coeff[["minutes"]],
    intercept_p = p_value[["(Intercept)"]],
    minutes_p = p_value[["minutes"]]
  )
}

# 分组计算回归结果
lm_abx_by_MIC <- rawdata2 %>% 
  group_by(antibiotic, MIC) %>% 
  # 提前过滤低于检测下限的观测
  filter(CFU_mean > 50) %>% 
  # 使用group_modify分组运行自定义函数,语法比do更简洁
  group_modify(~regressions(.x))

输出说明

运行完成后lm_abx_by_MIC会自动保留分组列antibiotic、MIC,同时包含截距、时间的回归系数、对应p值,完全匹配你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 07:09:03