A wrapper for consistent application of some actions based on the data after exposure.
act_after_exposure(.tbl, .trigger, .actor)Basically act_after_exposure() is doing the following:
Check that .tbl has a proper exposure attribute.
Compute whether to perform intended action by computing .trigger(.tbl).
If trigger results in TRUE then .actor(.tbl) is returned. In other
case .tbl is returned.
It is a good idea that .actor should be doing one of two things:
Making side effects. For example throwing an error (if condition in
.trigger is met), printing some information and so on. In this case it
should return .tbl to be used properly inside a pipe.
Changing .tbl based on exposure information. In this case it should
return the imputed version of .tbl.
any_breaker for trigger which returns TRUE in case any rule
breaker is found in exposure.
assert_any_breaker for usage of act_after_exposure() in building data
validation pipelines.
exposure_printer <- function(.tbl) {
print(get_exposure(.tbl))
.tbl
}
mtcars_exposed <- mtcars %>%
expose(data_packs(. %>% dplyr::summarise(nrow_low = nrow(.) > 50))) %>%
act_after_exposure(any_breaker, exposure_printer)
#> Exposure
#>
#> Packs info:
#> # A tibble: 1 × 4
#> name type fun remove_obeyers
#> <chr> <chr> <list> <lgl>
#> 1 data_pack__1 data_pack <data_pck> TRUE
#>
#> Tidy data validation report:
#> # A tibble: 1 × 5
#> pack rule var id value
#> <chr> <chr> <chr> <int> <lgl>
#> 1 data_pack__1 nrow_low .all 0 FALSE