knitr::opts_chunk$set( error = TRUE, collapse = TRUE, comment = "#>" ) library(attempt)

Tools for defensive programming, inspired by {purrr} mappers and based on {rlang}.
{attempt} is designed to handle the cases when something / someone attempts to do something it shouldn't.
For example:
log("a") (error)paste() "good morning" and iris (message/warning){attempt} provides several condition handlers, from try catch to simple message printing.
{attempt} only depends on {rlang}, and every function is design to be fast, making it easy to implement in other functions and packages.
From CRAN:
install.packages("attempt")
The dev version:
install.packages("attempt", repo = "https://colinfay.me/ran", type = "source")
{attempt} provides four families of functions :
Try catch functions are a family of functions which are used to deal with errors and warnings.
attempt behaves like base::try, except that it allows custom message printing. try_catch is a wrapper around tryCatch that has a consistent grammar and allows the use of mappers. try_catch_df returns a tibble with the call, the error message if any, the warning message if any, and the value of the evaluated expression or "error". The values will always be contained in a list-column.map_try_catch and map_try_catch_df allow to map on a list of arguments to be evaluated by the function in fun.Adverbs take a function and return a modified function.
silently transforms a function so that when you call this new function, it returns nothing unless there is an error or a warning.surely transforms a function so that when you call this new function, it calls attempt().with_message and with_warning take a function, and add a warning or a message to it.if_none, if_any and if_all test the elements of the list. if_then perfoms a "if this then that".if_else is a wrapper around base::ifelse() that works with mappers. stop_if, warn_if and message_if are easy to use functions that send an error, a warning or a message if a condition is met._if_not, and _if_all, _if_any and _if_none.Mappers are functions built like one sided formulas.
In other words, ~ .x + 2 is the equivalent of function(x) return(x + 2).
The first argument in a mapper need to be .x.
Questions and feedback welcome!
You want to contribute ? Open a PR :) If you encounter a bug or want to suggest an enhancement, please open an issue.
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.