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

在targets工作流中使用pointblank包时出现找不到数据表的问题

问题原因及解决方案

核心问题

你遇到的报错是因为YAML配置中的公式引用~my_data会在全局环境查找对象,但targets的每个目标都在独立临时环境中执行,全局环境不存在该对象。单独执行时my_data在当前会话的全局环境里,所以能正常运行,但targets管道环境不共享全局变量,因此找不到。

解决方案

方法1:修改校验函数,绑定传入的数据源

修改validate_data函数,在读取YAML后手动将传入的my_data设置为agent的数据源,覆盖YAML中的全局引用:

validate_data <- function(my_data, qc_yaml_file) {
  yaml_read_agent(qc_yaml_file) |> 
    set_tbl(tbl = my_data) |>  # 替换agent的数据源为函数参数传入的my_data
    interrogate()
}

方法2:生成YAML时不预先绑定数据源

如果想让校验规则更通用,可以在创建agent时不指定固定的tbl,后续在函数中动态绑定:

  1. 修改YAML生成代码:
create_agent(
  tbl = NULL,  # 不预先绑定数据源
  label = "check on mtcars",
  actions = action_levels(
    warn_at = 0.10,
    stop_at = 0.25
  )
) |> 
  col_exists(columns = c(cyl, vs, am, gear, carb)) |> 
  yaml_write(filename = "check_mtcars.yaml")
  1. 同样使用方法1中的validate_data函数,动态传入数据源。

验证修改

修改后运行tar_make(),targets管道会正常执行:

  • my_data和yaml_file会先被生成
  • qc_results目标中,agent会使用传入的my_data执行校验,不再依赖全局环境

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 00:22:29