Learn R Programming

stbl

R is flexible about classes. Variables are not declared with explicit classes, and arguments of the “wrong” class don’t cause errors until they explicitly fail at some point in the call stack. It would be helpful to keep that flexibility from a user standpoint, but to error informatively and quickly if the inputs will not work for a computation. The purpose of stbl is to allow programmers to specify what they want, and to then see if what the user supplied can work for that purpose.

Installation

Install the released version of stbl from CRAN:

install.packages("stbl")

Install the development version of stbl from GitHub:

# install.packages("pak")
pak::pak("jonthegeek/stbl")

Usage

Use within functions to give meaningful error messages for bad argument classes.

For example, perhaps you would like to protect against the case where data is not properly translated from character on load.

Without stbl:

Without the argument-stabilizers provided in stbl, error messages can be cryptic, and errors trigger when you might not want them to.

my_old_fun <- function(my_arg_name) {
  my_arg_name + 1
}
my_old_fun("1")
#> Error in my_arg_name + 1: non-numeric argument to binary operator

With stbl:

stbl helps to ensure that arguments are what you expect them to be.

my_fun <- function(my_arg_name) {
  my_arg_name <- stbl::to_int(my_arg_name)
  my_arg_name + 1
}
my_fun("1")
#> [1] 2

Failures are reported with helpful messages.

my_fun("1.1")
#> Error in `my_fun()`:
#> ! `my_arg_name` <character> must be coercible to <integer>
#> ✖ Can't convert some values due to loss of precision.
#> • Locations: 1

The errors help locate issues within vectors.

my_fun(c("1", "2", "3.1", "4", "5.2"))
#> Error in `my_fun()`:
#> ! `my_arg_name` <character> must be coercible to <integer>
#> ✖ Can't convert some values due to loss of precision.
#> • Locations: 3 and 5

Code of Conduct

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

Copy Link

Version

Install

install.packages('stbl')

Monthly Downloads

498

Version

0.1.1

License

MIT + file LICENSE

Issues

Pull Requests

Stars

Forks

Maintainer

Jon Harmon

Last Published

May 23rd, 2024

Functions in stbl (0.1.1)

object_type

Identify the class, type, etc of an object
stabilize_arg

Ensure an argument meets expectations
stabilize_int

Ensure an integer argument meets expectations
reexports

Objects exported from other packages
stbl-package

stbl: Stabilize Function Arguments
stabilize_fct

Ensure a factor argument meets expectations
stabilize_lgl

Ensure a logical argument meets expectations
stabilize_chr

Ensure a character argument meets expectations
.coerce-params

Shared parameters