## ----include = FALSE---------------------------------------------------------- knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) pkgload::load_all() ## ----setup-------------------------------------------------------------------- library(scrutiny) ## ----------------------------------------------------------------------------- schlim_scalar <- function(y, n) { y <- as.numeric(y) n <- as.numeric(n) all(y / 3 > n) } schlim_scalar(y = 30, n = 4) schlim_scalar(y = 2, n = 7) ## ----------------------------------------------------------------------------- schlim <- Vectorize(schlim_scalar) schlim(y = 10:15, n = 4) ## ----------------------------------------------------------------------------- schlim_map <- function_map( .fun = schlim_scalar, .reported = c("y", "n"), .name_test = "SCHLIM" ) # Example data: df1 <- tibble::tibble(y = 16:25, n = 3:12) schlim_map(df1) ## ----------------------------------------------------------------------------- df2 <- df1 names(df2) <- c("foo", "bar") df2 schlim_map(df2, y = foo, n = bar) ## ----error=TRUE--------------------------------------------------------------- schlim_map(df2, y = foo) # With a wrong identification: schlim_map(df2, n = mike) ## ----eval=FALSE, include=FALSE------------------------------------------------ # # NOTE: The two diagrams below should have width 585 and a locked aspect ratio. ## ----include=FALSE------------------------------------------------------------ # Just internally, so that the function source code below works: add_class <- scrutiny:::add_class ## ----------------------------------------------------------------------------- schlim_map_alt1 <- function(data, ...) { scrutiny::check_mapper_input_colnames(data, c("y", "n"), "SCHLIM") tibble::tibble( y = data$y, n = data$n, consistency = purrr::pmap_lgl(data, schlim_scalar, ...) ) %>% add_class("scr_schlim_map") # See section "S3 classes" below } ## ----------------------------------------------------------------------------- schlim_map_alt2 <- function(data, ...) { scrutiny::check_mapper_input_colnames(data, c("y", "n"), "SCHLIM") data %>% dplyr::rowwise() %>% dplyr::mutate(consistency = schlim_scalar(y, n, ...)) %>% dplyr::ungroup() %>% dplyr::relocate(y, n, consistency) %>% add_class("scr_schlim_map") # See section "S3 classes" below } ## ----------------------------------------------------------------------------- schlim_map_alt1(df1) schlim_map_alt2(df1) ## ----eval=FALSE--------------------------------------------------------------- # add_class <- function(x, new_class) { # class(x) <- c(new_class, class(x)) # x # } ## ----------------------------------------------------------------------------- some_object <- tibble::tibble(x = 5) some_object <- add_class(some_object, "dummy class") class(some_object) ## ----------------------------------------------------------------------------- df1_tested <- schlim_map(df1) class(df1_tested) ## ----error=TRUE--------------------------------------------------------------- # The `name_test` argument is only for the alert # that might be issued by `check_audit_special()`: audit.scr_schlim_map <- function(data) { audit_cols_minimal(data, name_test = "SCHLIM") } # This calls our new method: audit(df1_tested) # This doesn't work because no method was defined: audit(iris) ## ----------------------------------------------------------------------------- audit_grim <- audit(grim_map(pigs1)) audit_grimmer <- audit(grimmer_map(pigs5)) write_doc_audit(sample_output = audit_grim, name_test = "GRIM") write_doc_audit(sample_output = audit_grimmer, name_test = "GRIMMER") ## ----eval=FALSE--------------------------------------------------------------- # grim_map_seq <- function_map_seq( # .fun = grim_map, # .reported = c("x", "n"), # .name_test = "GRIM", # ) # # grimmer_map_seq <- function_map_seq( # .fun = grimmer_map, # .reported = c("x", "sd", "n"), # .name_test = "GRIMMER" # ) # # debit_map_seq <- function_map_seq( # .fun = debit_map, # .reported = c("x", "sd", "n"), # .name_test = "DEBIT", # ) ## ----------------------------------------------------------------------------- schlim_map_seq <- function_map_seq( .fun = schlim_map, .reported = c("y", "n"), .name_test = "SCHLIM" ) # Test dispersed sequences: out_seq <- schlim_map_seq(df1) out_seq # Summarize: audit_seq(out_seq) ## ----------------------------------------------------------------------------- df1 %>% schlim_map_seq(include_consistent = TRUE) %>% audit_seq() # Compare with the original values: df1 ## ----eval=FALSE--------------------------------------------------------------- # grim_map_total_n <- function_map_total_n( # .fun = grim_map, # .reported = "x", # don't include `n` here # .name_test = "GRIM" # ) # # grimmer_map_total_n <- function_map_total_n( # .fun = grimmer_map, # .reported = c("x", "sd"), # don't include `n` here # .name_test = "GRIMMER" # ) # # debit_map_total_n <- function_map_total_n( # .fun = debit_map, # .reported = c("x", "sd"), # don't include `n` here # .name_test = "DEBIT" # ) ## ----------------------------------------------------------------------------- schlim_map_total_n <- function_map_total_n( .fun = schlim_map, .reported = "y", .name_test = "SCHLIM" ) # Example data: df_groups_schlim <- tibble::tribble( ~y1, ~y2, ~n, 84, 37, 29, 61, 55, 26 ) # Test dispersed sequences: out_total_n <- schlim_map_total_n(df_groups_schlim) out_total_n # Summarize: audit_total_n(out_total_n) ## ----eval=FALSE--------------------------------------------------------------- # write_doc_audit_seq(key_args = c("x", "n"), name_test = "GRIM") # write_doc_audit_seq(key_args = c("x", "sd", "n"), name_test = "GRIMMER") # write_doc_audit_seq(key_args = c("x", "sd", "n"), name_test = "DEBIT") ## ----eval=FALSE--------------------------------------------------------------- # write_doc_audit_total_n(key_args = c("x", "n"), name_test = "GRIM") # write_doc_audit_total_n(key_args = c("x", "sd", "n"), name_test = "GRIMMER") # write_doc_audit_total_n(key_args = c("x", "sd", "n"), name_test = "DEBIT") ## ----include=FALSE, eval=FALSE------------------------------------------------ # # Note: The diagram was made on diagrams.net. The bold margins were created as follows: (1) selecting the respective field, (2) clicking on the `View` symbol at the upper left, (3) selecting `Format Panel`, and (4) setting the line thickness from 1 to 3 pt.