Skip to contents

Teal application to use association plot with various datasets types

This vignette will guide you through 4 parts to create a teal application using various types of datasets inside a data table 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

Create data sets

Inside this app 3 datasets will be used

  1. ADSL A wide data set with subject data
  2. ADTTE A long data set with time to event data
  3. ADLB A long data set with lab measurements for each subject
ADSL <- synthetic_cdisc_data("latest")$adsl # nolint
ADTTE <- synthetic_cdisc_data("latest")$adtte # 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_data_table using different combinations of data sets.

app <- init(
  data = cdisc_data(
    cdisc_dataset("ADSL", ADSL, code = "ADSL <- synthetic_cdisc_data(\"latest\")$adsl"),
    cdisc_dataset("ADTTE", ADTTE, code = "ADTTE <- synthetic_cdisc_data(\"latest\")$adtte"),
    cdisc_dataset("ADLB", ADLB, code = "ADLB <- synthetic_cdisc_data(\"latest\")$adlb"),
    check = TRUE
  ),
  modules = modules(
    # two-datasets example
    tm_data_table(
      label = "Two datasets",
      variables_selected = list(
        ADSL = c("STUDYID", "USUBJID", "SUBJID", "SITEID", "AGE", "SEX"),
        ADTTE = c(
          "STUDYID", "USUBJID", "SUBJID", "SITEID",
          "PARAM", "PARAMCD", "ARM", "ARMCD", "AVAL", "CNSR"
        )
      )
    ),
    # subsetting or changing order of datasets
    tm_data_table(
      label = "Datasets order",
      variables_selected = list(
        ADSL = c("STUDYID", "USUBJID", "SUBJID", "SITEID", "AGE", "SEX"),
        ADLB = c(
          "STUDYID", "USUBJID", "SUBJID", "SITEID",
          "PARAM", "PARAMCD", "AVISIT", "AVISITN", "AVAL", "CHG"
        )
      ),
      datasets_selected = c("ADTTE", "ADLB", "ADSL")
    ),
    # advanced usage of DT options and extensions
    tm_data_table(
      label = "Advanced DT usage",
      dt_args = list(extensions = c("Buttons", "ColReorder", "FixedHeader")),
      dt_options = list(
        searching = FALSE,
        pageLength = 30,
        lengthMenu = c(5, 15, 25, 50, 100),
        scrollX = FALSE,
        dom = "lBrtip",
        buttons = c("copy", "csv", "excel", "pdf", "print"),
        colReorder = TRUE,
        fixedHeader = TRUE
      )
    )
  )
)

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))