--- title: "Get started" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{get_started} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) ``` # Core functionality The package is quite small and contains the core function `sanityTracker::add_sanity_check` and a few convenience functions (use the prefix *sc_*) that basically call `sanityTracker::add_sanity_check`. Some of the convenience functions like `sanityTracker::sc_left_join` perform more than one check, other can check multiple columns at the same time like `sanityTracker::sc_cols_non_NA`. The most helpful feature is that no matter how deep your sanity check is buried in your source code, *sanityTracker* will centralize the results AND if the defined check fails a few examples of the failed rows are stored for investigation. The functions are more or less self explanatory, therefore we focus on the stored results and examples. We start with a very simple check. ```{r} library(sanityTracker) sc <- sanityTracker::add_sanity_check( fail_vec = mtcars$mpg > 30, description = "mpg should be below 30" ) get_sanity_checks() ``` We see that from the 32 observations contained in *mtcars* 4 observations have a mpg above 30. It also tracked how we actually performed the check in the column *fail_vec_str*. Usually, if failures happen, the next step is to actually investigate those cases. For this purpose that package offers the parameter *data*: ```{r} sc <- sanityTracker::add_sanity_check( fail_vec = mtcars$mpg > 30, description = "mpg should be below 30. extract example ", data = mtcars, param_name = "mpg" ) get_sanity_checks() ``` First note that we now see two lines where the first one is from our initial sanity check. Furthermore, the second line shows now that the column *example* is not empty: ```{r} get_sanity_checks()[["example"]][[2]] ``` If you call the sanity check from within a function, the results also appear in the global list of all sanity checks and the table shows the function call where the check happened. ```{r} g <- function(x) { sanityTracker::add_sanity_check( fail_vec = x$mpg > 30, description = "mpg should be below 30. check in function", data = x, param_name = "mpg" ) } f <- function(x) {g(x = x)} dummy <- f(x = mtcars) get_sanity_checks() ``` The function `sanityTracker::clear_sanity_checks` discards all sanity checks that are currently stored. ```{r} sanityTracker::clear_sanity_checks() sanityTracker::get_sanity_checks() ``` # Convenience functions Doing all checks with `sanityTracker::add_sanity_check` would be cumbersome. Therefore, the package provides some convenience functions to perform some standard checks like whether columns *a, b, c, x, y, z* are positive or do they contain missing values or is their combination unique. All convenience functions start with the prefix *sc_*. These functions provide additional information about the check(s) that they perform in the column *additional_desc*. So checking that all columns of *mtcars* are positive is quite easy. ```{r} sc <- sanityTracker::sc_cols_positive( object = mtcars, cols = names(mtcars), description = "Exemplary sanity checks" ) get_sanity_checks() ``` Note that although the convenience functions do not explicitly list the parameter, *description*, *counter_meas*, *data_name*, *example_size*, *param_name*, *call* and *fail_callback* can be used via the '...'-argument. ```{r} clear_sanity_checks() sc <- sanityTracker::sc_col_elements( object = mtcars, col = "carb", feasible_elements = 1:4, description = "Only usual number of carburetors", fail_callback = warning, call = "directly from vignette" ) get_sanity_checks() ```