Glue provides a few custom language engines for knitr, which allows you to use glue directly in knitr chunks.
glue
engine
The first engine is the glue
engine, which evaluates the
chunk contents as a glue template.
1 + 1 = {1 + 1}
## 1 + 1 = 2
Maybe the most useful use of the glue
engine is to set
the knitr option results = 'asis'
and output markdown or
HTML directly into the document.
```{glue, results = 'asis', echo = FALSE}
#### mtcars has **{nrow(mtcars)} rows** and _{ncol(mtcars)} columns_.
```
mtcars has 32 rows and 11 columns.
If you want to pass additional arguments into the glue call, simply include them as chunk options.
```{glue, .open = "<<", .close = ">>", results = 'asis', echo = FALSE}
The **median waiting time** between eruptions is <<median(faithful$waiting)>>.
```
The median waiting time between eruptions is 76.
glue_sql
engine
The second engine is glue_sql
, which will use
glue::glue_sql()
to generate a SQL query and then run the
query using the sql
engine.
First we create a new connection to an in-memory SQLite database, and write a new table to it.
con <- DBI::dbConnect(RSQLite::SQLite(), ":memory:")
mtcars$model <- rownames(mtcars)
DBI::dbWriteTable(con, "mtcars", mtcars)
Next define some variables we that we can use with glue to interpolate.
var <- "mpg"
tbl <- "mtcars"
num <- 150
Then we can use glue_sql
to construct and run a query
using those variables into that database. Note you need to
provide the connection object as a connection
chunk
option.
In this example there are two type of quotes. The first is a bare
backtick, these are passed directly to the SQL engine unchanged. The
second is backticks inside of braces, which are specially interpreted to
do the proper quoting for the given SQL engine by glue. In this example
we use the sqlite
engine, which uses backticks for quoting,
but you would use the same backticks inside brace syntax for postgreSQL,
and glue_sql()
would automatically use double quotes for
quoting instead.
```{glue_sql, connection = con}
SELECT `model`, `hp`, {`var`}
FROM {`tbl`}
WHERE {`tbl`}.`hp` > {num}
```
model | hp | mpg |
---|---|---|
Hornet Sportabout | 175 | 18.7 |
Duster 360 | 245 | 14.3 |
Merc 450SE | 180 | 16.4 |
Merc 450SL | 180 | 17.3 |
Merc 450SLC | 180 | 15.2 |
Cadillac Fleetwood | 205 | 10.4 |
Lincoln Continental | 215 | 10.4 |
Chrysler Imperial | 230 | 14.7 |
Camaro Z28 | 245 | 13.3 |
Pontiac Firebird | 175 | 19.2 |