The easiest way to get forestly is to install from CRAN:
install.packages("forestly")Alternatively, to use a new feature or get a bug fix, you can install the development version of forestly from GitHub:
# install.packages("remotes")
remotes::install_github("Merck/forestly")The forestly package creates interactive forest plots for clinical trial analysis & reporting.
- Safety analysis
- Specific adverse events analysis
 
- Efficacy analysis (future work)
- Subgroup analysis
 
forestly_screenrecording2.mp4
We assume ADaM datasets are ready for analysis and leverage metalite data structure to define inputs and outputs.
The general workflow is:
- meta_forestly()constructs input metadata for treatment analysis from ADaM datasets.
- prepare_ae_forestly()prepares datasets for interactive forest plot.
- format_ae_forestly()formats output layout.
- ae_forestly()generates an interactive forest plot.
Here is a quick example
library("forestly")
meta_forestly(
  dataset_adsl = forestly_adsl,
  dataset_adae = forestly_adae,
  parameter_term = "any;rel;ser",
  population_subset = SAFFL == "Y",
  observation_subset = SAFFL == "Y"
) |>
  prepare_ae_forestly(parameter = "any;rel;ser") |>
  format_ae_forestly() |>
  ae_forestly()The interactive features for safety analysis include:
- Select different AE criteria.
- Filter by incidence of AE in one or more groups.
- Reveal information by hovering the mouse over a data point.
- Search bars to find subjects with selected adverse events (AEs).
- Sort value by clicking the column header.
- Drill-down listing by clicking $\blacktriangleright$ .
- Paper: 2023 PHUSE US Connect
- Talk: 2021 R/Pharma Conference