うまく機能するRmarkdownテンプレートを用意し、それをパラメーター化して、異なるデータソースから同じレポートのバリアントを生成できるようにしました。ただし、各ケースでレポートのタイトルを変更したいと思います。それ、どうやったら出来るの?
ここに私がこれまで持っているYAMLヘッダーがあります:
_---
title: "My Title"
author: "Me, Inc."
date: "August 4, 2015"
output: pdf_document
params:
title: default
---
_
_rmarkdown::render
_の呼び出しでparams=list(title="ASDF")
を使用してみましたが、私のコードではその変数を見ることができますが、タイトルは変更されません。 YAMLで_r params$title
_を使用しようとしましたが、構文エラーが発生します。
私がしようとしている他のものはありますか?ありがとう!
2番目のYAMLメタデータブロックを使用して、パラメーター化されたメタデータをそこに配置してください。
次のコードを期待どおりに動作させました(つまり、paramsのリストからドキュメントのタイトルを生成します):
---
output: html_document
params:
set_title: "My Title!"
---
---
title: `r params$set_title`
---
RMarkdown documentation は、YAMLメタデータブロックがPandocによって結合されることを示しています。最初のブロックを使用してパラメーターセットを定義し、2番目のブロックを使用してパラメーターをメタデータとして使用します。 KnitrはRコードを実行して2番目のブロックのパラメーターを解釈します。その後、Pandocはメタデータブロックをマージします。
更新(2017):
これは、次のように単一のブロックで実現できます。
---
output: html_document
params:
set_title: "My Title!"
title: "`r params$set_title`"
---
これは、タイトルがparams
定義の後に来るために機能します。 「スキャナーエラー」を防ぐために、インラインRコードを引用符で囲みます。
これは、動的タイトルの課題に対するより単純化されたアプローチです。
次のようにタイトルをトップ宣言から分離します。
これから:
---
title: Sample_Title
output: pdf_document
---
これに:
---
output: pdf_document
---
<r code chunks>
---
title: `r name_of_title_variable`
---
Rコードチャンク内で、「name_of_title_variable」を宣言します。これで、タイトルは変数内に保持されます。お役に立てれば!
この回答を追加すると、Rマークダウンタイトルを動的にするのに役立ちます。
!rの後に定義されたオブジェクト名(以下の場合はtest_title)を使用して、タイトルを動的にします。
---
output: pdf_document
params:
set_title: !r test_title
---
---
title: `r params$set_title`
---