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

broom::tidy升级后提取分组回归斜率报错,求修复及替代方案

报错原因分析
  • 核心原因是你使用的旧版broom+dplyr::do()的分组建模语法在新版本中已被弃用:旧版broom::tidy支持直接读取do()生成的模型列表列进行解析,但是新版移除了该兼容逻辑,tidy()现在要求传入参数必须为模型对象本身,你代码中tidy(model)的写法会被识别为尝试对整个数据框的列进行统计计算,将分组因子search_type代入了方差、均值计算逻辑,就触发了「对因子x调用var(x)已失效」的报错。
  • 附带的警告也完全对应上述逻辑:第一个警告直接提示旧版数据框整理函数已弃用,后两个警告是因子列代入均值计算时返回NA的提示。
修复方案

推荐使用新版tidyverse标准的嵌套建模写法替代do(),兼容性和运行效率都更高,修复后代码如下:

library(tidyverse)
library(broom)

E1.first_trial_df <- data.frame( 
  search_type  = factor(rep(1:3, each = 10)),
  set_size    = rep(1:10,3),
  RT     = runif(30, min = 0, max = 2500)
)

E1.search_slopes_first_trial <- E1.first_trial_df %>%
  # 按search_type分组嵌套生成子数据集
  nest_by(search_type) %>%
  # 每个分组拟合线性模型,list()包裹避免自动展开
  mutate(model = list(lm(RT ~ set_size, data = data))) %>%
  # 提取所有模型的统计指标
  summarise(broom::tidy(model)) %>%
  # 过滤保留set_size对应的斜率
  filter(term == 'set_size')

运行上述代码即可正常得到各分组的set_size回归斜率结果,不会再触发报错和警告。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 10:18:02