You need to enable JavaScript to run this app. 为何nest_by无法复现group_by+nest的分组嵌套建模流程?
优惠活动
大模型
产品
解决方案
定价
更多

为何nest_by无法复现group_by+nest的分组嵌套建模流程?

使用nest_by实现分组嵌套建模的正确方法

报错原因

nest_by() 默认返回按行(rowwise)分组的tibble,在rowwise的计算语境下,mutate调用data字段时会直接读取当前行的单个数据框,而非整个列表列,对单个数据框直接使用map迭代会触发类型不匹配错误。

正确实现方式

方案1:适配nest_by的行分组特性(推荐,代码更简洁)

无需调用map迭代,直接基于行分组的逐行计算特性构建模型即可,仅需用list()包裹模型对象,避免被mutate自动拆分:

library(tidyverse)

mpg %>% 
  nest_by(manufacturer) %>% 
  mutate(
    mods = list(lm(cty ~ displ, data = data))
  )

该代码运行后输出的结构与group_by() + nest的实现完全一致,若需要取消默认的rowwise分组,在管道末尾添加ungroup()即可。

方案2:保留原map写法

如果希望沿用原有map迭代的逻辑,只需先取消rowwise分组,将data列转为普通列表列后再进行迭代:

mpg %>% 
  nest_by(manufacturer) %>% 
  ungroup() %>% 
  mutate(
    mods = data %>% map(\(i) lm(cty ~ displ, data = i))
  )

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 00:54:03