The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

decorators

CRAN status R build status codecov

A decorator is a function that receives a function, extends its behaviour, and returned the altered function. Any caller that uses the decorated function uses the same interface as it were the original, undecorated function.

Examples

time_it decorator

# Running the original Sys.sleep() produces no output
Sys.sleep(0.1)

# Decorating the Sys.sleep() with time_it() measures Sys.sleep() execution time 
# and outputs the measurement   
Sys.sleep <- decorators::time_it(base::Sys.sleep)
Sys.sleep(0.1)
#> Time difference of 0.11 secs

validate_arguments decorator

## Define a functions that averages two numbers
average_two_numbers <- function(a = NA_real_, b = NA_real_) mean(c(a, b))

## Before: Averaging two nun-numeric values returns NA and prompts a warning
average_two_numbers(a = "1", b = "2")
#> [1] NA
## Decorating average_two_numbers() with validate_arguments() checks input types
average_two_numbers <- decorators::validate_arguments(average_two_numbers)

## After: Averaging two nun-numeric prompts an informative error
average_two_numbers(a = "1", b = "2")
#> Error in average_two_numbers(a = "1", b = "2") : 
#>   a is of type `character` rather than `numeric`!

Installation

You can install the released version of decorators from CRAN with:

install.packages("decorators")

And the development version from GitHub with:

# install.packages("devtools")
devtools::install_github("tidylab/decorators")

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.