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

tidymodels的recipe封装为自定义函数时报错如何解决?

报错原因
  • 变量名拼写错误:你调用函数时传入的参数为speeding,但训练数据集里的对应变量名为spending,笔误会导致变量找不到。
  • 公式注入语法不兼容:recipe()的公式参数不直接支持双大括号{{}}的注入逻辑,直接使用会被recipe识别为非法的内联函数,触发你遇到的报错。
解决方法

你可以通过两种方式实现动态传入变量构造recipe的需求:

方法1:用reformulate构造公式(更易读)

library(rlang)

custom_rec <- function(dat, var){
  # 先将传入的变量转为字符串,构造目标公式
  target_var <- as_name(enquo(var))
  rec_formula <- reformulate(target_var, response = "nearness")
  tree_rec <- recipe(rec_formula, data = dat)
  return(tree_rec)
}

# 传入正确的变量名调用
my_rec <- custom_rec(park_train, spending)

方法2:用tidy eval注入符号(更符合tidyverse风格)

library(rlang)

custom_rec <- function(dat, var){
  # 将传入的变量转为符号后注入公式
  tree_rec <- recipe(nearness ~ !!ensym(var), data = dat)
  return(tree_rec)
}

# 调用方式不变
my_rec <- custom_rec(park_train, spending)

两种方法都可以正常生成recipe对象,后续可以正常添加预处理步骤、执行拟合操作。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 21:45:01