resolve_missing: Resolve missing values in function parameters and check...

View source: R/params_resolve_missing.R

resolve_missingR Documentation

Resolve missing values in function parameters and check consistency

Description

Uses relationships between parameters to iteratively fill in missing values. It is possible to specify an inconsistent set of rules or data in which case the resulting values will be picked up and an error thrown.

Usage

resolve_missing(
  ...,
  .env = rlang::caller_env(),
  .eval_null = TRUE,
  .error = NULL
)

Arguments

...

either a set of relationships as a list of x=y+z expressions

.env

the environment to check in (optional - defaults to caller_env())

.eval_null

The default behaviour (when this option is TRUE) considers missing values to be are either not given, given explicitly as NULL or given as a NULL default value. Sometimes we need to consider NULL values differently to missing values. If this is set to FALSE only strictly missing values are resolved, and explicit NULL values left as is.

.error

a glue specification defining the error message. This can use parameters .missing, .constraints, .present and .call to construct an error message. If NULL a default message is provided that is generally sufficient.

Value

nothing. Alters the .env environment to fill in missing values or throws an informative error

Examples

# missing variables left with no default value in function definition
testfn = function(pos, neg, n) {
  resolve_missing(pos=n-neg, neg=n-pos, n=pos+neg)
  return(tibble::tibble(pos=pos,neg=neg,n=n))
}

testfn(pos=1:4, neg = 4:1)
testfn(neg=1:4, n = 10:7)

try(testfn())

# not enough info to infer the missing variables
try(testfn(neg=1:4))

# the parameters given are inconsistent with the relationships defined.
try(testfn(pos=2, neg=1, n=4))

interfacer documentation built on April 4, 2025, 6:13 a.m.