This module produces a grid-style forest plot for response data with ADaM structure.
Usage
tm_g_forest_rsp(
label,
dataname,
parentname = ifelse(inherits(arm_var, "data_extract_spec"),
teal.transform::datanames_input(arm_var), "ADSL"),
arm_var,
arm_ref_comp = NULL,
paramcd,
aval_var = teal.transform::choices_selected(teal.transform::variable_choices(dataname,
"AVALC"), "AVALC", fixed = TRUE),
subgroup_var,
strata_var,
stats = c("n_tot", "n", "n_rsp", "prop", "or", "ci"),
riskdiff = NULL,
fixed_symbol_size = TRUE,
conf_level = teal.transform::choices_selected(c(0.95, 0.9, 0.8), 0.95, keep_order =
TRUE),
default_responses = c("CR", "PR", "Y", "Complete Response (CR)",
"Partial Response (PR)"),
plot_height = c(500L, 200L, 2000L),
plot_width = c(1500L, 800L, 3000L),
rel_width_forest = c(25L, 0L, 100L),
font_size = c(15L, 1L, 30L),
pre_output = NULL,
post_output = NULL,
ggplot2_args = teal.widgets::ggplot2_args()
)
Arguments
- label
(
character
)
menu item label of the module in the teal app.- dataname
(
character
)
analysis data used in teal module.- parentname
(
character
)
parent analysis data used in teal module, usually this refers toADSL
.- arm_var
(
teal.transform::choices_selected()
)
object with all available choices and preselected option for variable names that can be used asarm_var
. It defines the grouping variable in the results table.- arm_ref_comp
(
list
) optional,
if specified it must be a named list with each element corresponding to an arm variable inADSL
and the element must be another list (possibly with delayedteal.transform::variable_choices()
or delayedteal.transform::value_choices()
with the elements namedref
andcomp
that the defined the default reference and comparison arms when the arm variable is changed.- paramcd
(
teal.transform::choices_selected()
)
object with all available choices and preselected option for the parameter code variable fromdataname
.- aval_var
(
teal.transform::choices_selected()
)
object with all available choices and pre-selected option for the analysis variable.- subgroup_var
(
teal.transform::choices_selected()
)
object with all available choices and preselected option for variable names that can be used as the default subgroups.- strata_var
(
teal.transform::choices_selected()
)
names of the variables for stratified analysis.- stats
-
(
character
)
the names of statistics to be reported among:n
: Total number of observations per group.n_rsp
: Number of responders per group.prop
: Proportion of responders.n_tot
: Total number of observations.or
: Odds ratio.ci
: Confidence interval of odds ratio.pval
: p-value of the effect. Note, the statisticsn_tot
,or
, andci
are required.
- riskdiff
(
list
)
if a risk (proportion) difference column should be added, a list of settings to apply within the column. Seecontrol_riskdiff()
for details. IfNULL
, no risk difference column will be added.- fixed_symbol_size
(
logical
)
When (TRUE
), the same symbol size is used for plotting each estimate. Otherwise, the symbol size will be proportional to the sample size in each each subgroup.- conf_level
(
teal.transform::choices_selected()
)
object with all available choices and pre-selected option for the confidence level, each within range of (0, 1).- default_responses
(
list
orcharacter
)
defines the default codes for the response variable in the module per value ofparamcd
. A passed vector is transmitted for allparamcd
values. A passedlist
must be named and contain arrays, each name corresponding to a single value ofparamcd
. Each array may contain default response values or named arraysrsp
of default selected response values andlevels
of default level choices.- plot_height
(
numeric
) optional
vector of length three withc(value, min, max)
. Specifies the height of the main plot and renders a slider on the plot to interactively adjust the plot height.- plot_width
(
numeric
) optional
vector of length three withc(value, min, max)
. Specifies the width of the main plot and renders a slider on the plot to interactively adjust the plot width.- rel_width_forest
(
proportion
)
proportion of total width to allocate to the forest plot. Relative width of table is then1 - rel_width_forest
. Ifas_list = TRUE
, this parameter is ignored.- font_size
(
numeric(1)
)
font size.- pre_output
(
shiny.tag
) optional,
with text placed before the output to put the output into context. For example a title.- post_output
(
shiny.tag
) optional,
with text placed after the output to put the output into context. For example theshiny::helpText()
elements are useful.- ggplot2_args
-
(
ggplot2_args
) optional
object created byteal.widgets::ggplot2_args()
with settings for the module plot. For this module, this argument will only acceptggplot2_args
object withlabs
list of following child elements:title
,caption
. No other elements would be taken into account. The argument is merged with optionteal.ggplot2_args
and with default module arguments (hard coded in the module body).For more details, see the vignette:
vignette("custom-ggplot2-arguments", package = "teal.widgets")
.
See also
The TLG Catalog where additional example apps implementing this module can be found.
Examples
library(nestcolor)
library(dplyr)
data <- teal_data()
data <- within(data, {
ADSL <- tmc_ex_adsl
ADRS <- tmc_ex_adrs %>%
mutate(AVALC = d_onco_rsp_label(AVALC) %>%
with_label("Character Result/Finding")) %>%
filter(PARAMCD != "OVRINV" | AVISIT == "FOLLOW UP")
})
join_keys(data) <- default_cdisc_join_keys[names(data)]
ADSL <- data[["ADSL"]]
ADRS <- data[["ADRS"]]
arm_ref_comp <- list(
ARM = list(
ref = "B: Placebo",
comp = c("A: Drug X", "C: Combination")
),
ARMCD = list(
ref = "ARM B",
comp = c("ARM A", "ARM C")
)
)
app <- init(
data = data,
modules = modules(
tm_g_forest_rsp(
label = "Forest Response",
dataname = "ADRS",
arm_var = choices_selected(
variable_choices(ADSL, c("ARM", "ARMCD")),
"ARMCD"
),
arm_ref_comp = arm_ref_comp,
paramcd = choices_selected(
value_choices(ADRS, "PARAMCD", "PARAM"),
"INVET"
),
subgroup_var = choices_selected(
variable_choices(ADSL, names(ADSL)),
c("BMRKR2", "SEX")
),
strata_var = choices_selected(
variable_choices(ADSL, c("STRATA1", "STRATA2")),
"STRATA2"
),
plot_height = c(600L, 200L, 2000L),
default_responses = list(
BESRSPI = list(
rsp = c("Stable Disease (SD)", "Not Evaluable (NE)"),
levels = c(
"Complete Response (CR)", "Partial Response (PR)", "Stable Disease (SD)",
"Progressive Disease (PD)", "Not Evaluable (NE)"
)
),
INVET = list(
rsp = c("Complete Response (CR)", "Partial Response (PR)"),
levels = c(
"Complete Response (CR)", "Not Evaluable (NE)", "Partial Response (PR)",
"Progressive Disease (PD)", "Stable Disease (SD)"
)
),
OVRINV = list(
rsp = c("Progressive Disease (PD)", "Stable Disease (SD)"),
levels = c("Progressive Disease (PD)", "Stable Disease (SD)", "Not Evaluable (NE)")
)
)
)
)
)
#> Initializing tm_g_forest_rsp
#> Initializing reporter_previewer_module
if (interactive()) {
shinyApp(app$ui, app$server)
}