match_param: Match params

View source: R/match-arg.R

match_paramR Documentation

Match params

Description

Much like base::match.arg() with a few key differences:

  • Will not perform partial matching

  • Will not return error messages with ugly quotation marks

Usage

match_param(
  param,
  choices,
  null = TRUE,
  partial = getOption("mark.match_param.partial", FALSE),
  multiple = FALSE,
  simplify = TRUE
)

Arguments

param

The parameter

choices

The available choices; named lists will return the name (a character) for when matched to the value within the list element. A list of formula objects (preferred) retains the LHS of the formula as the return value when matched to the RHS of the formula.

null

If TRUE allows NULL to be passed a param

partial

If TRUE allows partial matching via pmatch()

multiple

If TRUE allows multiple values to be returned

simplify

If TRUE will simplify the output to a single value

Details

Param matching for an argument

Value

A single value from param matched on choices

See Also

match_arg()

Examples

fruits <- function(x = c("apple", "banana", "orange")) {
  match_param(x)
}

fruits()         # apple
try(fruits("b")) # must be exact fruits("banana")

pfruits <- function(x = c("apple", "apricot", "banana")) {
  match_param(x, partial = TRUE)
}
pfruits()          # apple
try(pfruits("ap")) # matchParamMatchError
pfruits("app")     # apple

afruits <- function(x = c("apple", "banana", "orange")) {
  match_param(x, multiple = TRUE)
}

afruits() # apple, banana, orange

# can have multiple responses
how_much <- function(x = list(too_few = 0:2, ok = 3:5, too_many = 6:10)) {
  match_param(x)
}

how_much(1)
how_much(3)
how_much(9)

# use a list of formulas instead
ls <- list(1L ~ 0:1, 2L, 3L ~ 3:5)
sapply(0:5, match_param, choices = ls)

mark documentation built on May 29, 2024, 5:13 a.m.