7.15 ハードコア HTML ユーザー向けの話 (*)

6.12節では, Markdown がシンプルであるがゆえにその制約が強すぎると感じるときは, Markdown の代わりに純粋な LaTeX 文書にコードチャンクを埋め込むことができる, という話をしました. 同様に, 直接 HTML コードを書くことに慣れていて快適さを感じるなら, HTML にコードチャンクを混ぜ合わせることもまた可能です. そのような文書は慣習的に .Rhtml というファイル拡張子を持ちます.

Rhtml 文書では, コードチャンクは <!--begin.rcodeend.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 に &pi; の値を聞いてみましょう. もちろん答えは <!--rinline pi --> です.</p>

</body>
</html>