7.15 ハードコア HTML ユーザー向けの話 (*)
6.12節では, Markdown がシンプルであるがゆえにその制約が強すぎると感じるときは, Markdown の代わりに純粋な LaTeX 文書にコードチャンクを埋め込むことができる, という話をしました. 同様に, 直接 HTML コードを書くことに慣れていて快適さを感じるなら, HTML にコードチャンクを混ぜ合わせることもまた可能です. そのような文書は慣習的に .Rhtml
というファイル拡張子を持ちます.
Rhtml
文書では, コードチャンクは <!--begin.rcode
と end.rcode-->
の間に埋め込まれ, インライン R コードは <!--rinline -->
内に埋め込まれます. 以下は Rhtml
全体の例です. これを test.Rhtml
というファイル名で保存し, knitr::knit("test.Rhtml")
を使ってコンパイルできます. 出力は 1つの HTML (.html
) ファイルになります. RStudio では, ツールバーの Knit
ボタンを押すことでもコンパイルできます.
<!DOCTYPE html>
<html>
<head>
<title>HTML の最低限の knitr 使用例</title>
</head>
<body>
<!--begin.rcode
knitr::opts_chunk$set(fig.width=5, fig.height=5)
end.rcode-->
<p>これは <strong>knitr</strong> が純粋な HTML ページでどのように動作するかの最低限の例です.</p>
<p>お決まりの退屈な使用例.</p>
<!--begin.rcode
# 単純な計算
1 + 1
# 退屈な乱数生成
set.seed(123)
rnorm(5)
end.rcode-->
<p>図を生成することもできます (<code>fig.align='center'</code>オプションで中央揃えしています).</p>
<!--begin.rcode cars-scatter, fig.align='center'
plot(mpg ~ hp, data = mtcars)
end.rcode-->
<p>エラー, メッセージ, 警告文はそれぞれ異なる<code>class</code>を持つ <code>div</code> 内に配置されます.</p>
<!--begin.rcode
sqrt(-1) # 警告
message('knitr says hello to HTML!')
1 + 'a' # ミッションインポッシブル
end.rcode-->
<p>さて全てうまくいっているようです. R に π の値を聞いてみましょう. もちろん答えは <!--rinline pi --> です.</p>
</body>
</html>