knitr::opts_chunk$set( collapse = TRUE, comment = "#>" )
AutoslideR
core functions that are used for slide rendering and workflow is already open-sourced with the
autoslider.core
package, if you have built your own customized template package, namely autoslider.*
(see this page for guidelines), once the template functions are stable, generic, we also encourage to make these functions open-source for external users. This article describes the how to process. Template that contains specific variable names or columns are not recommended for open-sourcing. The key steps include the following
From autoslider.*
to autoslider.core
.
Move the template R functions autoslider.core
R/
directory, rebuild the autoslider.core
documentation, and update the autoslider.core
NAMESPACE
.
Copy (keep one copy within autoslideR
) the relevant test function to autoslider.core
tests/testthat
directory.
On the autoslider.*
side.
Reexport the template function, and edit the R/autoslider_core.R
file.
autoslideR
NAMESPACE
.For example, t_dm_slide.R
contains t_dm_slide
template function, as the following
#' Demographic table #' #' @param adsl ADSL data set, dataframe #' @param arm Arm variable, character, "`TRT01P" by default. #' @param vars Characters of variables #' @param stats see `.stats` from [tern::analyze_vars()] #' @param split_by_study Split by study, building structured header for tables #' @param side_by_side "GlobalAsia" or "GlobalAsiaChina" to define the side by side requirement #' @return rtables object #' @inherit gen_notes note #' @export #' @examples #' library(dplyr) #' adsl <- eg_adsl #' out1 <- t_dm_slide(adsl, "TRT01P", c("SEX", "AGE", "RACE", "ETHNIC", "COUNTRY")) #' print(out1) #' generate_slides(out1, paste0(tempdir(), "/dm.pptx")) #' #' out2 <- t_dm_slide(adsl, "TRT01P", c("SEX", "AGE", "RACE", "ETHNIC", "COUNTRY"), #' split_by_study = TRUE #' ) #' print(out2) #' t_dm_slide <- function(adsl, arm = "TRT01P", vars = c("AGE", "SEX", "RACE"), stats = c("median", "range", "count_fraction"), split_by_study = FALSE, side_by_side = NULL) { if (is.null(side_by_side)) { extra <- NULL } else { extra <- c("COUNTRY") } for (v in c(vars, extra)) { assert_that(has_name(adsl, v)) } adsl1 <- adsl %>% select(all_of(c("STUDYID", "USUBJID", arm, vars, extra))) lyt <- build_table_header(adsl1, arm, split_by_study = split_by_study, side_by_side = side_by_side ) lyt <- lyt %>% analyze_vars( na.rm = TRUE, .stats = stats, denom = "n", vars = vars, .formats = c(mean_sd = "xx.xx (xx.xx)", median = "xx.xx"), var_labels = formatters::var_labels(adsl1)[vars] ) result <- lyt_to_side_by_side(lyt, adsl1, side_by_side) if (is.null(side_by_side)) { # adding "N" attribute arm <- col_paths(result)[[1]][1] n_r <- data.frame( ARM = toupper(names(result@col_info)), N = col_counts(result) %>% as.numeric() ) %>% `colnames<-`(c(paste(arm), "N")) %>% dplyr::arrange(get(arm)) attr(result, "N") <- n_r } result@main_title <- "Demographic slide" result }
t_dm_slide.R
file from autoslider.*
to autoslider.core
R/
directory. autoslider.*
tests/testthat/test-t_dm_slide.R
to autoslider.core
tests/testthat/
.autoslider.*
R/autoslider_core.R
file.#' Demographic table #' @importFrom autoslider.core t_dm_slide #' @examples #' library(dplyr) #' adsl <- eg_adsl #' out1 <- t_dm_slide(adsl, "TRT01P", c("SEX", "AGE", "RACE", "ETHNIC", "COUNTRY")) #' print(out1) #' generate_slides(out1, "dm.pptx") #' #' out2 <- t_dm_slide(adsl, "TRT01P", c("SEX", "AGE", "RACE", "ETHNIC", "COUNTRY"), #' split_by_study = TRUE #' ) #' print(out2) #' #' @export autoslider.core::t_dm_slide
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.