私は、データセットのさまざまなサブセットで同じ分析セットを実行するレポートを生成するために、knitrを使用しようとしています。プロジェクトには2つのRmdファイルが含まれています。最初のファイルはワークスペースとドキュメントを設定するマスタードキュメントで、2番目のファイルは解析を実行し、関連する図を生成するチャンクのみを含んでいます。R knitr:プログラムでチャンクラベルを変更することはできますか?
マスターファイルを編成して、各データサブセットの2番目のファイルを呼び出し、その結果を1つのドキュメントに含めることです。以下は簡単な例です。
マスター文書:
# My report
```{r}
library(iterators)
data(mtcars)
```
```{r create-iterator}
cyl.i <- iter(unique(mtcars$cyl))
```
## Generate report for each level of cylinder variable
```{r cyl4-report, child='analysis-template.Rmd'}
```
```{r cyl6-report, child='analysis-template.Rmd'}
```
```{r cyl8-report, child='analysis-template.Rmd'}
```
分析-template.Rmd:
```{r, results='asis'}
cur.cyl <- nextElem(cyl.i)
cat("###", cur.cyl)
```
```{r mpg-histogram}
hist(mtcars$mpg[mtcars$cyl == cur.cyl], main = paste(cur.cyl, "cylinders"))
```
```{r weight-histogam}
hist(mtcars$wt[mtcars$cyl == cur.cyl], main = paste(cur.cyl, "cylinders"))
```
問題はknitrが非ユニークチャンクのラベルを許可しないので、編みは、第二呼び出されたときにanalysis-template.Rmd
失敗時間。この問題は、ユニークなラベルが自動的に生成されるため、チャンクの名前を残しておくことで回避できます。しかし、これは理想的ではありません。なぜなら、チャンクラベルを使用して、エクスポートされたプロットの有益なファイル名を作成したいからです。
潜在的な解決策は、チャンクのラベルに現在のシリンダーを追加し、簡単な関数で使用して次のようになります。
```r{paste('cur-label', cyl, sep = "-")}
```
をしかし、それknitrがチャンクのラベル位置に式を評価します表示されません。 。
私はまた、現在のチャンクのラベルを変更するカスタムchunk hookを使用してみました:
knit_hooks$set(cyl.suffix = function(before, options, envir) {
if (before) options$label <- "new-label"
})
しかし、チャンクのラベルが生成されたプロットのファイル名には影響しなかった変更、私はknitrを考えていませんでした新しいラベルを使用していました。
同じチャイルド文書を複数回呼び出すことができるようにチャンクラベルを変更する方法についてのアイデアはありますか?これを達成するための代替戦略かもしれませんか?
このアプローチを使用しましたが、テンプレートで 'echo = FALSE'を使用するとコードが処理されません。あなたは同じ行動に気付いたことがありますか? –
**編集**:このアプローチを** bookdown **パッケージとともに使用し、テンプレートで 'results = 'asis''と' echo = FALSE'を使用するとコードが処理されないことに気付きました。ソリューションは、それぞれの出力を別々のコード・チャンクに入れることです。 –