Reproducible reports are an important part of good practices. We often need to report the results from a table in the text of an R markdown report. Inline reporting has been made simple with inline_text(). The inline_text() function reports statistics from gtsummary tables inline in an R markdown report.
This vignette will walk a reader through the inline_text() function, and the various functions available to modify and make additions. The inline.text() function works with tables made using tbl_summary(), tbl_regression(), tbl_uvregression(), and tbl_survival().
Before going through the tutorial, install {gtsummary} and {gt}.
We’ll be using the trial data set throughout this example.
For brevity in the tutorial, let’s keep a subset of the variables from the trial data set.
First create a basic summary table using tbl_summary() (review tbl_summary() vignette for detailed overview of this function if needed).
| Characteristic | Drug A, N = 981 | Drug B, N = 1021 |
|---|---|---|
| Marker Level (ng/mL) | 0.84 (0.24, 1.57) | 0.52 (0.19, 1.20) |
| Unknown | 6 | 4 |
| T Stage | ||
| T1 | 28 (29%) | 25 (25%) |
| T2 | 25 (26%) | 29 (28%) |
| T3 | 22 (22%) | 21 (21%) |
| T4 | 23 (23%) | 27 (26%) |
|
1
Statistics presented: median (IQR); n (%)
|
||
To report the median (IQR) of the marker levels in each group, use the following commands inline.
The median (IQR) marker level in the Drug A and Drug B groups are
`r inline_text(tab1, variable = marker, column = "Drug A")`and`r inline_text(tab1, variable = marker, column = "Drug B")`, respectively.
Here’s how the line will appear in your report.
The median (IQR) marker level in the Drug A and Drug B groups are 0.84 (0.24, 1.57) and 0.52 (0.19, 1.20), respectively.
If you display a statistic from a categorical variable, include the level argument.
`r inline_text(tab1, variable = stage, level = "T1", column = "Drug B")`resolves to “25 (25%)”
Similar syntax is used to report results from tbl_regression(), tbl_uvregression(), and tbl_survival() tables. Refer to the tbl_regression() vignette if you need detailed guidance on using these functions.
Let’s first create a regression model.
# build logistic regression model
m1 = glm(response ~ age + stage, trial, family = binomial(link = "logit"))Now summarize the results with tbl_regression(); exponentiate to get the odds ratios.
| Characteristic | OR1 | 95% CI1 | p-value |
|---|---|---|---|
| Age | 1.02 | 1.00, 1.04 | 0.091 |
| T Stage | |||
| T1 | — | — | |
| T2 | 0.58 | 0.24, 1.37 | 0.2 |
| T3 | 0.94 | 0.39, 2.28 | 0.9 |
| T4 | 0.79 | 0.33, 1.90 | 0.6 |
|
1
OR = Odds Ratio, CI = Confidence Interval
|
|||
To report the result for age, use the following commands inline.
`r inline_text(tbl_m1, variable = age)`
Here’s how the line will appear in your report.
1.02 (95% CI 1.00, 1.04; p=0.091)
It is reasonable that you’ll need to modify the text. To do this, use the pattern argument. The pattern argument syntax follows glue::glue() format with referenced R objects being inserted between curly brackets. The default is pattern = "{estimate} ({conf.level*100}% CI {conf.low}, {conf.high}; {p.value})". You have access the to following fields within the pattern argument.
{estimate} primary estimate (e.g. model coefficient, odds ratio)
{conf.low} lower limit of confidence interval
{conf.high} upper limit of confidence interval
{p.value} p-value
{conf.level} confidence level of interval
{N} number of observations
Age was not significantly associated with tumor response
`r inline_text(tbl_m1, variable = age, pattern = "(OR {estimate}; 95% CI {conf.low}, {conf.high}; {p.value})")`.
Age was not significantly associated with tumor response (OR 1.02; 95% CI 1.00, 1.04; p=0.091).
If you’re printing results from a categorical variable, include the level argument, e.g. inline_text(tbl_m1, variable = stage, level = "T3") resolves to “0.94 (95% CI 0.39, 2.28; p=0.9)”.
The inline_text function has arguments for rounding the p-value (pvalue_fun) and the coefficients and confidence interval (estimate_fun). These default to the same rounding performed in the table, but can be modified when reporting inline.
For more details about inline code, review to the RStudio documentation page.