jpaRmdで再現可能な査読対応をしちゃおう!

これは,Open and Reproducible Science Advent Calendar 2020 - Adventar19日目の記事です。

今年は,日本心理学会第84回大会で,竹林由武さんと一緒にチュートリアル・ワークショップ今日からできる再現可能な論文執筆を行いました。それにあたって,『心理学研究』投稿用のR MarkdownテンプレートパッケージjpaRmdを作りました。『心理学研究』用テンプレート『認知行動療法研究』用テンプレートの紹介については,既に行ったので,今回は,査読時のリプライと修正対照表の作成用テンプレートの使い方について説明をします。

github.com

jpaRmdのインストール方法

インストールは,remotesのinstall_github()を使って,GitHub経由で行います。remotesがインストールされていない方は,事前にinstall.packages("remotes")でインストールください。

# install.packages("remotes")
remotes::install_github("ykunisato/jpaRmd")

査読時の修正原稿の作り方

具体的な手順を説明するために,jpaRmdを使って原稿を用意してみましょう。jpaRmdで『心理学研究』論文を再現可能に書こう! - Computational Clinical Psychology Labを参考に,以下を実行して,『心理学研究』用原稿を用意しましょう。

  1. (1)「File」 -> 「New File」 -> 「R Markdown…」 をクリックして,「From Template」から「Japanese Psychological Association format {jpaRmd}」を選びます。
  2. デフォルトでは,Untitledになっているので,Testに変更して,「OK」をクリックします。
  3. 開いたTest.Rmdファイルの38行目のRmd_file="Untitled.Rmd"になっているので,"Test.Rmd"に変更します。
  4. knitしてPDFを作ります。

ここまでは,jpaRmdで『心理学研究』論文を再現可能に書こう! - Computational Clinical Psychology Labで解説した通りです。次に,査読者の指摘に従って,原稿を修正することにします。査読者の指摘に従って原稿を修正する場合は,元の原稿ファイルをコピーして,別名で保存します。

具体的には,以下のようにファイルの左のチェックボックスにチェックをいれて,「More」から「Copy...」をクリックします。

f:id:cpp-laboratory:20201217053529p:plain

以下のようなウィンドウが開きます。

f:id:cpp-laboratory:20201217053525p:plain

改稿原稿と分かるように,Test_r1.Rmdと名前をつけてOKをクリックします。

f:id:cpp-laboratory:20201217053523p:plain

それでは,Test_r1.Rmdを改稿していきます。まず,以下を削除しました。

f:id:cpp-laboratory:20201217054054p:plain

次に,以下を加筆しました。

f:id:cpp-laboratory:20201217054104p:plain

最後に,以下の文章を修正しました。

f:id:cpp-laboratory:20201217054333p:plain

とりあえず,改稿は終わったとして,査読時のリプレイと修正対照表を作ることにしましょう。jpaRmdには,査読コメントへのリプライや原稿の修正対照表に関するテンプレートが用意されています。

査読時のリプライと修正対応表のテンプレートを用意する

査読時のリプライと修正対応表のテンプレートを用意しましょう。RStudioで,「File」 -> 「New File」 -> 「R Markdown…」 をクリックします。「Reply to Reviewer {jpaRmd}」を選びます。

f:id:cpp-laboratory:20201217060444p:plain

このままだとUntitled.Rmdで保存されるので,保存ボタンをクリックして,名前を付けて保存します。

f:id:cpp-laboratory:20201217060457p:plain

なんでもいいのですが,replyという名前で保存します。

f:id:cpp-laboratory:20201217060548p:plain

コメントへのリプライを書く

以下のようにR Markdown上で査読者のコメントとそれに対するリプライを書きます。なお,この辺の書き方は,研究室や領域によっても変わると思うので,適宜好みに変更ください。あくまで一例です。

f:id:cpp-laboratory:20201217060751p:plain

修正対照表を用意する

修正対照表は,修正しつつ作成してもいいのですが,まずは修正作業に集中して,後から修正前原稿と修正後原稿の差分をチェックして反映させるほうが楽かもしれません。Rではいくつかファイルのテキスト情報の差分をチェックしてくれる関数があります。以下のdiffobjを使うと,とても綺麗に表示してくれるのでオススメです。なお,diffobjを使う場合は,Rmdファイルではなくて,RmdからPDFを作る過程で生成されるTeXファイルを使うと良いです(jpaRmdの場合は,デフォルトでTeXファイルが出力されるようになっています)。以下のように,diffFile()関数内に,修正前原稿のTeXファイル(Test.tex)と修正後原稿のTeXファイル(Test_r1.tex)をいれます。

library(diffobj)
diffFile("Test.tex","Test_r1.tex")

実行するとViewerに以下のように修正された箇所がピックアップして表示されます。どこが修正前でどちらが修正後か分かるように色分けして表示されます。この情報を使って,修正対照表をつくっていきましょう。

f:id:cpp-laboratory:20201217061959p:plain

修正対照表を作る場合は,以下にあるようなold_m()関数とnew_m()関数を使います(jpaRmd用のオリジナル関数です)。old_m()関数は,修正前原稿のテキスト情報を蓄積するもので,new_m()関数は,修正後原稿のテキスト情報を蓄積するものです。なので,以下のように,old_m()に修正前の原稿のテキストをいれて,new_m()に修正後の原稿のテキストをいれてきます。この作業を自動化できると良かったのですが,現状ではちょっと面倒な部分がありますので,上のdiffFile()で表示された結果からコピペが柔軟で楽かと思います(R Markdownを使う理由にコピペ汚染の回避とか言っていましたが・・・)。これは,上から処理をしていきますので,old_m()とnew_m()の対で,どんどん修正前と修正後をいれていきます。

注意点は以下の3つです。

  • \ldots{}みたいなTeXの記号があるとうまくいかないので削除するか手入力ください
  • old_m()とnew_m()の対で書いていきます(これは後で修正する時に修正しやすくするためです)
  • ページ番号と行番号などは自動で入らないので(diffFile()で表示されるのはTeXの行番号なのでPDFとは違うので,使えない),knitされたPDFで確認しつつ手入力ください

f:id:cpp-laboratory:20201217062937p:plain

old_m()とnew_m()の設定ができたら,knitします。knitすると,old_m()とnew_m()で蓄積されたテキストを表として出力するmake_correction_table()関数が実行されて,以下のように出力されます。微妙に業界によって書き方は違うのですが,最低限は押さているのではないかと思います。

f:id:cpp-laboratory:20201217062957p:plain

修正対照表は,以下のように,次のページにも続いていきます(実に美しいですね...)

f:id:cpp-laboratory:20201217063041p:plain

美しく正確な修正対照表で査読者をいらいらさせずにアクセプトをもぎ取りましょう!

Enjoy!