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

如何用purrr为mtcars分组模型生成全数据集预测值?

解决purrr包中模型预测范围的问题

要得到包含3个元素、每个元素对应32个预测值的列表,核心是确保每个分组拟合的模型都对完整的mtcars数据集做预测,而不是仅对分组子集预测。以下是修正后的代码和说明:

完整代码示例

# 加载tidyverse(包含purrr)
library(tidyverse)

# 步骤1:按cyl拆分数据集
cyl_groups <- split(mtcars, mtcars$cyl)

# 步骤2:为每个分组拟合线性模型
cyl_models <- map(cyl_groups, ~lm(qsec ~ hp, data = .x))

# 步骤3:用每个模型对整个mtcars数据集做预测
full_predictions <- map(cyl_models, ~predict(.x, newdata = mtcars))

也可以用管道简化为链式操作:

full_predictions <- mtcars %>%
  split(.$cyl) %>%
  map(~lm(qsec ~ hp, data = .x)) %>%
  map(~predict(.x, newdata = mtcars))

问题原因说明

你之前的代码应该是在predict时将newdata指定为了拆分后的分组子集(比如newdata = .x),导致每个模型仅预测自身分组的行,所以每个元素的长度小于32。修正后将newdata明确设为完整的mtcars,每个模型都会对全部32行数据生成预测值,最终得到的列表就会包含3个各含32个值的元素。

内容的提问来源于stack exchange,提问作者T. K.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 21:46:02