With pointblank YAML, we can serialize an agent's validation plan (with yaml_write()), read it back later with a new agent (with yaml_read_agent()), or perform an interrogation on the target data table directly with the YAML file (with yaml_agent_interrogate()). The yaml_agent_string() function allows us to inspect the YAML generated by yaml_write() in the console, giving us a look at the YAML without needing to open the file directly. Alternatively, we can provide an agent to the yaml_agent_string() and view the YAML representation of the validation plan without needing to write the YAML to disk beforehand.

yaml_agent_string(agent = NULL, filename = NULL, path = NULL, expanded = FALSE)



An agent object of class ptblank_agent. If an object is provided here, then filename must not be provided.


The name of the YAML file that contains fields related to an agent. If a file name is provided here, then agent object must not be provided in agent.


An optional path to the YAML file (combined with filename).


Should the written validation expressions for an agent be expanded such that tidyselect and vars() expressions for columns are evaluated, yielding a validation function per column? By default, this is FALSE so expressions as written will be retained in the YAML representation.

Function ID



if (interactive()) {

# Let's create a validation plan for the
# data quality analysis of the `small_table`
# dataset; we need an agent and its
# table-prep formula enables retrieval
# of the target table
agent <- 
    read_fn = ~ small_table,
    tbl_name = "small_table",
    label = "A simple example with the `small_table`.",
    actions = action_levels(
      warn_at = 0.10,
      stop_at = 0.25,
      notify_at = 0.35
  ) %>%
  col_exists(vars(date, date_time)) %>%
    regex = "[0-9]-[a-z]{3}-[0-9]{3}"
  ) %>%
  rows_distinct() %>%
  col_vals_gt(vars(d), value = 100) %>%
  col_vals_lte(vars(c), value = 5)

# We can view the YAML file in the console
# with the `yaml_agent_string()` function,
# providing the `agent` object as the input
yaml_agent_string(agent = agent)

# The agent can be written to a pointblank
# YAML file with `yaml_write()`
  agent = agent,
  filename = "agent-small_table.yml"

# There's a similar file in the package
# ('agent-small_table.yml') and it's
# accessible with `system.file()`
yml_file <- 
    "yaml", "agent-small_table.yml",
    package = "pointblank"

# The `yaml_agent_string()` function can
# be used with the YAML file as well,
# use the `filename` argument instead
yaml_agent_string(filename = yml_file)

# At some later time, the YAML file can
# be read as a new agent with the
# `yaml_read_agent()` function
agent <- yaml_read_agent(filename = yml_file)