8.2 R Markdown と Word 間の双方向ワークフロー

R Markdown から Word 文書を生成するのは簡単ですが, その一方, 誰かが Word 文書を編集したものを元の R Markdown 文書に手動で反映しなければならないときは, 特に苦痛が伴います. 幸いにも Noam Ross がこの問題に対して有望な解決策を提示しています. redoc パッケージ (https://github.com/noamross/redoc) は Word 文書を生成し, 文書を校正してから R Markdown に再度変換することを可能にします. この原稿を書いている現時点 (2020年6月) では redoc パッケージはまだ試験的であり, さらに不運なことに, 彼は開発を中止しています. どちらにせよこれを試して見たいなら, GitHub からインストールすることができます.

remotes::install_github("noamross/redoc")

パッケージがインストールされたら, 出力フォーマット redoc::redoc を使うこともできます.

---
output: redoc::redoc
---

この出力フォーマットは, 実際には元の Rmd 文書を保存したWord 文書を生成するので, Word 文書を Rmd に変換して戻すこともできます. Word 上の変更履歴は CriticMarkup 構文 (http://criticmarkup.com) で書かれたテキストへ変換されます 例えば {++ 重要 ++} はテキストに「重要」という単語が挿入されたことを表現しています.

redoc::redoc で生成された Word 文書は, redoc::dedoc() 関数で Rmd に変換できます. 例えば redoc::dedoc("file.docx")file.Rmd を生成します. この処理では Word 上の変更履歴にどう対処するかを track_changes 引数で決めることができます. 例えば変更を受け入れるか破棄するか, 変更履歴を CriticMarkup に変換するかなどです. 変更履歴が完全に失われてしまわないように, track_changes = 'criticmarkup' を使うことを推奨します.

Word 文書を編集する際には, R Markdown のコードチャンクやインライン R コードによって自動生成されていない箇所を編集すると想定されています. 例えばコードチャンク内で knitr::kable() を使って自動生成された表は編集してはなりません. そのような変更は dedoc() で Word から Rmd に変換する際に失われるからです. コードチャンクで自動生成された出力を誤って編集することを避けるために, redoc::redoc フォーマットの highlight_outputs オプションを trueに設定してください. これは自動出力した箇所を Word 上で背景色で強調表示することを意味します. あなたの共同編集者には Word 文書上の強調表示された箇所に触れないよう伝えるべきでしょう.

繰り返しになりますが, redoc パッケージは未だ試験的であり現時点ではその機能がはっきりしないため, ここでの導入はあえて簡潔なものとしています. 信用できない場合, GitHub 上のパッケージのドキュメントを読むことをお薦めします32.


  1. 訳注: 2021/5/7 現在, redoc パッケージは開発を中止しています. 動作確認は使用者自身でお願いします.↩︎