2015-10-09 8 views
6

にインラインRコードを評価し、私は、例えば、図のキャプションにインラインコードを含めたいですチャンクのオプションで、次のようなもの:は私が</p> <p>を.docxのために.Rmdを編むためにRStudioとknitrを使用していますrmarkdown図のキャプション

fig.cap =

nrow(data)データポイントのグラフは、」しかし、knitrではなく、単に未評価のコマンドを印刷し、このコードを評価しません。

figure/tableのキャプションでrコードを評価する方法はありますか?

+0

ペースト(「Graph of」、nrow(データ)、「データポイント」) 'を試してください。 –

答えて

8

knitrは、チャンクオプションをRコードとして評価します。したがって、ちょうどpaste又はsprintfを使用して、必要な文字列を構成し、図キャプションに変数の値を含める:これはdataこのチャンク内部が作成されている場合は問題である(としない可能性があること

fig.cap = paste("Graph of", nrow(data), "data points") 

注以前のチャンクオプションはの前に評価されています。の前にチャンク自体が評価されるためです)。

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) 
``` 

を最初に、この問題を解決するチャンク自体が評価された後にオプションが評価さfig.cap持つようにパッケージオプションeval.afterを使用するには

数字のキャプションはがなくても機能します。irisデータセットは常に利用可能です(datasetsが添付されている限り)。最後のチャンクが評価される前にdata2が存在しないため、eval.afterなしで2番目のFigureキャプションを生成すると失敗します。

関連する問題