6
我使用RStudio和knitr編織.Rmd爲.docx評估在rmarkdown圖題內嵌R代碼裏面
我想包括圖字幕例如內嵌代碼像在塊選項如下:
fig.cap =
「的nrow(data)
數據點圖」然而,knitr不評估此代碼,而不是僅僅打印未計算的命令。
有沒有辦法讓knitr評估圖形/表格標題中的r代碼?
我使用RStudio和knitr編織.Rmd爲.docx評估在rmarkdown圖題內嵌R代碼裏面
我想包括圖字幕例如內嵌代碼像在塊選項如下:
fig.cap =
「的nrow(data)
數據點圖」然而,knitr不評估此代碼,而不是僅僅打印未計算的命令。
有沒有辦法讓knitr評估圖形/表格標題中的r代碼?
knitr
將塊選項評估爲R代碼。因此,包括在圖題的變量值,使用paste
或sprintf
只是組成所需的字符串:
fig.cap = paste("Graph of", nrow(data), "data points")
注意,如果data
創建這個塊內,這可能是有問題的(而不是在之前的塊中),因爲默認情況下塊評估選項在之前評估。
爲了解決此問題,使用的封裝選項eval.after
有塊本身進行了評估後的選項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
,生成第二個數字標題將會失敗,因爲data2
在最後一個數據塊被評估之前不存在。
請嘗試粘貼(「圖的」,nrow(數據),「數據點」)'。 –