Skip to contents

Teal application to analyse and report outliers with various datasets types.

This vignette will guide you through 4 parts to create a teal application using various types of datasets inside the outliers module:

  1. Load Libraries
  2. Create data sets
  3. Create an app variable
  4. Run the App

Loading libraries

library(teal.modules.general) # used to create the app
library(scda) # used to create data sets
library(dplyr) # used to modify data sets

Create data sets

Inside this app 5 datasets will be used

  1. ADSL A wide data set with subject data
  2. ADRS A long data set with response data for subjects at different time points of the study
  3. ADLB A long data set with lab measurements for each subject
ADSL <- synthetic_cdisc_data("latest")$adsl # nolint
ADRS <- synthetic_cdisc_data("latest")$adrs # nolint
ADLB <- synthetic_cdisc_data("latest")$adlb # nolint

Create an app variable

This is the most important section. We will use the teal::init function to create an app. The data will be handed over using teal.data::cdisc_data. The app itself will be constructed by multiple calls of tm_outliers using different combinations of data sets.

app <- init(
  data = cdisc_data(
    cdisc_dataset("ADSL", ADSL, code = "ADSL <- synthetic_cdisc_data(\"latest\")$adsl"),
    cdisc_dataset("ADRS", ADRS, code = "ADRS <- synthetic_cdisc_data(\"latest\")$adrs"),
    cdisc_dataset("ADLB", ADLB, code = "ADLB <- synthetic_cdisc_data(\"latest\")$adlb"),
    check = TRUE
  ),
  modules = modules(
    # tm_outliers ----
    modules(
      label = "Outliers module",
      tm_outliers(
        label = "Single wide dataset",
        outlier_var = data_extract_spec(
          dataname = "ADSL",
          select = select_spec(
            label = "Select variable:",
            choices = variable_choices(ADSL, c("AGE", "BMRKR1")),
            selected = "AGE",
            fixed = FALSE
          )
        ),
        categorical_var = data_extract_spec(
          dataname = "ADSL",
          select = select_spec(
            label = "Select variables:",
            choices = variable_choices(ADSL, subset = names(Filter(isTRUE, sapply(ADSL, is.factor)))),
            selected = "RACE",
            multiple = FALSE,
            fixed = FALSE
          )
        )
      ),
      tm_outliers(
        label = "Wide and long datasets",
        outlier_var = list(
          data_extract_spec(
            dataname = "ADSL",
            select = select_spec(
              label = "Select variable:",
              choices = variable_choices(ADSL, c("AGE", "BMRKR1")),
              selected = "AGE",
              fixed = FALSE
            )
          ),
          data_extract_spec(
            dataname = "ADLB",
            select = select_spec(
              label = "Select variable:",
              choices = variable_choices(ADLB, c("AVAL", "CHG2")),
              selected = "AVAL",
              multiple = FALSE,
              fixed = FALSE
            )
          )
        ),
        categorical_var =
          data_extract_spec(
            dataname = "ADSL",
            select = select_spec(
              label = "Select variables:",
              choices = variable_choices(ADSL, subset = names(Filter(isTRUE, sapply(ADSL, is.factor)))),
              selected = "RACE",
              multiple = FALSE,
              fixed = FALSE
            )
          )
      ),
      tm_outliers(
        label = "Multiple long datasets",
        outlier_var = list(
          data_extract_spec(
            dataname = "ADRS",
            select = select_spec(
              label = "Select variable:",
              choices = variable_choices(ADRS, c("ADY", "EOSDY")),
              selected = "ADY",
              fixed = FALSE
            )
          ),
          data_extract_spec(
            dataname = "ADLB",
            select = select_spec(
              label = "Select variable:",
              choices = variable_choices(ADLB, c("AVAL", "CHG2")),
              selected = "AVAL",
              multiple = FALSE,
              fixed = FALSE
            )
          )
        ),
        categorical_var = list(
          data_extract_spec(
            dataname = "ADRS",
            select = select_spec(
              label = "Select variables:",
              choices = variable_choices(ADRS, c("ARM", "ACTARM")),
              selected = "ARM",
              multiple = FALSE,
              fixed = FALSE
            )
          ),
          data_extract_spec(
            dataname = "ADLB",
            select = select_spec(
              label = "Select variables:",
              choices = variable_choices(ADLB, subset = names(Filter(isTRUE, sapply(ADLB, is.factor)))),
              selected = "RACE",
              multiple = FALSE,
              fixed = FALSE
            )
          )
        )
      )
    )
  )
)

Run the app

A simple shiny::shinyApp call will let you run the app. Note that app is only displayed when running this code inside an R session.

shinyApp(app$ui, app$server, options = list(height = 1024, width = 1024))