在 {targets} 管道中使用 {pointblank} 时找不到表

问题描述 投票:0回答:1

我正在尝试使用

{pointblank}
包来验证
{targets}
管道中的某些数据,但不断收到错误,提示找不到要操作的数据对象。当我执行行
 validate_data(my_data, yaml_file)
时,它会产生预期的输出。

以下为有限表述:

library(targets)
library(tarchetypes)
library(pointblank)
library(data.table)

validate_data <- function(my_data, qc_yaml_file) {
  yaml_read_agent(qc_yaml_file) |>
    interrogate()
}

create_agent(
  tbl = ~ my_data,
  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")



# Run the R scripts in the R/ folder with your custom functions:
tar_source()

# Replace the target list below with your own:
tar_plan(
  my_data = setDT(copy(mtcars)),
  tar_file(
    yaml_file,
    "check_mtcars.yaml"
  ),
  tar_target(
    qc_results,
    validate_data(my_data, yaml_file)
  )
)

create_agent
管道生成的 yaml 文件如下所示:

type: agent
tbl: ~my_data
tbl_name: ~my_data
label: check on mtcars
lang: en
locale: en
actions:
  warn_fraction: 0.1
  stop_fraction: 0.25
steps:
- col_exists:
    columns: c(cyl, vs, am, gear, carb)

任何关于为什么目标管道找不到

my_data
对象的指导将不胜感激。

r target pointblank
1个回答
0
投票

因此,只要有副作用,使用

{targets}
就会变得很棘手,所以我建议避免依赖
.yaml
文件:

library(targets)
library(pointblank)
library(data.table)

wrapper_create_agent <- function(dataset){

create_agent(
  tbl = dataset,
  tbl_name = "my_data",
  label = "check on mtcars",
  actions = action_levels(
    warn_at = 0.10,
    stop_at = 0.25
  )
) |>
  col_exists(columns = c(cyl, vs, am, gear, carb))

}


# Replace the target list below with your own:
list(

  tar_target(
    my_data,
    setDT(copy(mtcars))
  ),

  tar_target(
    my_agent,
    wrapper_create_agent(my_data)
  ),

  tar_target(
    qc_results,
    interrogate(my_agent)
  )
)

然后您可以使用

tar_read(qc_results)

检查结果
© www.soinside.com 2019 - 2024. All rights reserved.