knitr
evaluates chunk options as R code. Therefore, to include a variable value in a figure caption, just compose the required string using paste
or sprintf
:
fig.cap = paste("Graph of", nrow(data), "data points")
Note that this might be problematic if data
is created inside this chunk (and not in a previous chunk) because by default chunk options are evaluated before the chunk itself is evaluated.
To solve this issue, use the package option eval.after
to have the option fig.cap
be evaluated after the chunk itself has been evaluated:
library(knitr)
opts_knit$set(eval.after = "fig.cap")
Here a complete example:
---
title: "SO"
output:
word_document:
fig_caption: yes
---
```{r fig.cap = paste("Graph of", nrow(iris), "data points.")}
plot(iris)
```
```{r setup}
library(knitr)
opts_knit$set(eval.after = "fig.cap")
```
```{r fig.cap = paste("Graph of", nrow(data2), "data points.")}
data2 <- data.frame(1:10)
plot(data2)
```
The first figure caption works even without eval.after
because the iris
dataset is always available (as long as datasets
has been attached). Generating the second figure caption would fail without eval.after
because data2
does not exist before the last chunk has been evaluated.
paste("Graph of", nrow(data), "data points")
. – CL.