epoxy
epoxy copied to clipboard
Extra-strength glue engines for R Markdown, Quarto, and Shiny
epoxy 
epoxy makes templating with glue easy in R Markdown documents and Shiny apps.
Installation
You can install the latest version of epoxy with remotes
# install.packages("remotes")
remotes::install_github("gadenbuie/epoxy")
or from gadenbuie.r-universe.dev.
options(repos = c(
gadenbuie = "https://gadenbuie.r-universe.dev/",
getOptions("repos")
))
install.packages("epoxy")
Setup
library(epoxy)
Loading epoxy adds four new knitr
engines, or
chunk types. Each type lets you intermix text with R code or data
(expr
in the table below), and each is geared toward a different
output context.
Engine | Output Context | Delimiter |
---|---|---|
epoxy |
all-purpose markdown | {expr} |
epoxy_html |
HTML | {{expr}} |
epoxy_latex |
LaTeX | <expr> |
whisker |
all-purpose | mustache template language |
⚠️ Caution: Previously, epoxy provided a glue
engine, but this
conflicts with a similar chunk engine by the
glue package. You can update existing
documents to use the epoxy
engine, or you can explicitly use epoxy’s
glue
chunk by including the following in your setup chunk.
use_epoxy_glue_engine()
Use epoxy
To use epoxy in your R Markdown document, create a new chunk using the engine of your choice. In that chunk, write in markdown, HTML, or LaTeX as needed, wrapping R expressions inside the delimiters for the epoxy chunk.
```{epoxy}
The average speed of the cars was **{mean(cars$speed)} mph.**
But on average the distance traveled was only _{mean(cars$dist)}_.
```
The average speed of the cars was 15.4 mph. But on average the distance traveled was only 42.98 ft.
epoxy
is built around glue::glue()
, which evaluates the R
expressions in the { }
and inserts the results into the string. The
chunk above is equivalent to this call to glue::glue()
:
glue::glue("The average speed of the cars was **{mean(cars$speed)} mph**.
But on average the distance traveled was only _{mean(cars$dist)} ft_.")
#> The average speed of the cars was **15.4 mph**.
#> But on average the distance traveled was only _42.98 ft_.
One immediate advantage of using epoxy
instead of glue::glue()
is
that RStudio’s autocompletion feature works inside epoxy
chunks!
Typing cars$
in the chunk will suggest the columns of cars
.
Learn more
There’s a whole lot more that epoxy can do! Learn more: