我正在使用RStudio和knitr将.Rmd编织为.docx
我想在图标题中包含内联代码,例如类似于chunk选项中的以下内容:
fig.cap =“nrow(data)
数据点图表”
但是,knitr不会评估此代码,而只是打印未评估的命令。
有没有办法让knitr来评估图/表标题中的r代码?
答案 0 :(得分:11)
knitr
将块选项评估为R代码。因此,要在图标题中包含变量值,只需使用paste
或sprintf
撰写所需的字符串:
fig.cap = paste("Graph of", nrow(data), "data points")
请注意,如果在此块中创建了<{1}}(而不是之前的块),则可能会出现问题,因为默认情况下会在 之前评估块选项块本身被评估。
要解决此问题,请使用包选项eval.after
在评估块本身后评估选项data
:
fig.cap
这是一个完整的例子:
library(knitr)
opts_knit$set(eval.after = "fig.cap")
第一个数字标题即使没有---
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)
```
也可以使用,因为eval.after
数据集始终可用(只要附加了iris
)。如果没有datasets
,则生成第二个数字标题将失败,因为在评估最后一个块之前eval.after
不存在。