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

如何用purrr结合tidymodels批量拟合多个模型?

解决tidymodels中遍历预测变量拟合模型的问题

你遇到的问题确实是tidy evaluation导致的——直接在add_formula里写mpg ~ .x时,tidymodels会把.x当作数据里的变量名,而不是遍历的预测变量元素。以下是两种可行的解决方案:

方法一:用reformulate动态生成公式

reformulate可以直接把字符型的预测变量转换成公式,用法简单直观:

library(tidymodels)
library(purrr)

# 定义预测变量向量
pred_vars <- c("disp", "hp", "wt")

# 遍历拟合模型
models <- map(pred_vars, function(var) {
  workflow() %>% 
    add_model(linear_reg()) %>% 
    add_formula(reformulate(var, response = "mpg")) %>% 
    fit(mtcars)
})

# 查看每个模型的结果
models

方法二:用rlang的tidy eval注入变量

如果需要更灵活的公式构建(比如后续扩展多变量组合),可以用rlang包的符号注入功能:

library(tidymodels)
library(purrr)
library(rlang)

pred_vars <- c("disp", "hp", "wt")

models <- map(pred_vars, function(var) {
  # 将字符变量转换为符号
  var_sym <- sym(var)
  workflow() %>% 
    add_model(linear_reg()) %>% 
    add_formula(expr(mpg ~ !!var_sym)) %>% 
    fit(mtcars)
})

models

两种方法都能解决“数据中未找到预测变量'.x'”的错误,你可以根据后续需求选择合适的方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 21:57:40