Casting Values into Shape

Helper functions with a consistent interface to coerce and verify the types and shapes of values for input checking.

Travis buildstatusCoveragestatusAppVeyorbuildstatus

forge provides functions for input checking and casting. It is intended to be used by package developers, especially for interoperating with other runtimes, such as Python and JVM languages. It contains two families of functions, cast_* and certify(). The former casts a value to a specific type, while the latter ensures certain conditions are met.


You can install forge from CRAN with


You can install the development version from GitHub with



Here we demonstrate forge with a trivial function:

#' @import forge
fib <- function(n) {
  n <- cast_scalar_integer(n, return_id = TRUE) %>%
  if (n <= 2) {
    if( n >= 0) 1 else 0 
  } else {
    Recall(n - 1) + Recall(n - 2)
#> [1] 55
#> Error: `n` cannot be casted to an integer vector.
#> Error: Condition `gte(0)` not satisfied for `n`.

We can also provide arbitrary conditions to certify():

some_vec <- 1:5
certify(some_vec,  ~ any(.x < 2))
#> [1] 1 2 3 4 5
certify(some_vec, ~ mean(.x) > 2)
#> [1] 1 2 3 4 5
certify(some_vec, ~ all(.x <= 5), ~ mean(.x) > 3)
#> Error: Condition `~mean(.x) > 3` not satisfied for `some_vec`.

Please note that the ‘forge’ project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.


forge 0.2.0

  • All function gained an id parameter for the developer to specify a name for the input. This defaults to the developer inputed expression for x. The return_id parameter can be set when using the %>% operator to pass the ID to the next forge function.
  • Added certify() along with helper functions e.g. ge(), gte(), lt(), for common comparisons. One can also provide arbitrary conditions in the form of functions.
  • Revised README to reflect changes.

Reference manual

It appears you don't have a PDF plugin for this browser. You can click here to download the reference manual.


0.2.0 by Kevin Kuo, 2 months ago

Browse source code at

Authors: Kevin Kuo [aut, cre]

Documentation:   PDF Manual  

Apache License (>= 2.0) license

Imports rlang, magrittr

Suggests testthat, covr

Imported by graphframes, mlflow, sparklyr, sparkxgb, tfestimators, tfio.

See at CRAN