7.8 HTML 出力に好きなファイルを埋め込む

7.7節で言及したように, HTML出力には Rmd ソース文書のコピーを埋め込めます. Rmd ファイル単体ではレポートを再現するのに不十分なこともあります. 例えばレポートに外部のデータファイルが必要かもしれません. HTML 出力ファイルに好きなファイルを埋め込んでくれる一連の関数が xfun パッケージ (Xie 2021g) にあります. これらの関数を使うために, 以下の R パッケージを用意しておきます.

xfun::pkg_load2(c("htmltools", "mime"))

これにより, コードチャンク内で xfun::embed_file(), xfun::embed_files(), xfun::embed_dir() のどれかを使って, 1つ以上のファイルやディレクトリを HTML 出力に埋め込めます. 例えばこのように.

```{r echo=FALSE}
# a single file
xfun::embed_file('source.Rmd')

# multiple files
xfun::embed_files(c('source.Rmd', 'data.csv'))

# a directory
xfun::embed_dir('data/', text = 'Download full data')
```

プログラミング的にファイルのリストを与えることもできます. 例えばこのように.

# embed all Rmd and csv files
xfun::embed_files(list.files(".", "[.](Rmd|csv)$"))

複数のファイルに対しては, これらの関数はまず zip ファイルに圧縮してから, その zip ファイルを埋め込みます. これらの関数はリンクを返し, 読者は HTML ページのリンクをクリックして埋め込んだファイルをダウンロードすることができます.

これらの関数のより詳細な技術的情報は, ヘルプページ ?xfun::embed_file またはブログ投稿 https://yihui.org/en/2018/07/embed-file/ で学ぶことができます. 同様のアイディアにより, downloadthis package (Mattioni Maturana 2020) はダウンロードボタンを実装したことで, ユーザーはリンクではなくダウンロードボタンをクリックしてダウンロードできるようになります. ボタンを使うほうがお好みなら, こちらを使うことも検討するとよいでしょう.

参考文献

Mattioni Maturana, Felipe. 2020. Downloadthis: Implement Download Buttons in Rmarkdown. https://github.com/fmmattioni/downloadthis.
———. 2021g. Xfun: Supporting Functions for Packages Maintained by Yihui Xie. https://github.com/yihui/xfun.