疫学専門家このブログのモットーは『研究ライフをほんのり豊かに』。/こんにちは、すきとほる疫学徒です。Tipsでは、私自身の備忘録も兼ねて、おすすめのRパッケージを紹介します。80%くらいは備忘録が目的なので、殴り書きになりますことをお許しください。パイプラインのショートカットRをRたらしめる機能、そうそれはパイプライン。全世界のRユーザーによる入力頻度No1のコードでしょう。一括ソートコードを書いていると、書いたり消したりしてるうちに先頭行の位置がばらばらになり、視認性が悪くなってしまうことがあると思います。「放置してるよ」いろんな声が聞こえてきますね。医療大規模データを解析する際には、残念ながら上で述べたどちらの方法も推奨されないでしょう。手作業で治すことにより、必要なコードまで気づかずに削除してしまうというヒューマンエラーが起こります。必然的にスクリプトに何行にもわたって多くのコードを書く必要がある医療大規模データ解析では、ざっと見て「何が書いてあるか」を瞬時に確認できるだけの視認性が命です。放置したままではいけません。そんな時に役立つのがこのショートカット。iこれにより、選択範囲にあるコードを一括で、いい感じにソートしてくれます。縦に一括選択Rでは、あるコマンドを使うことで、このように縦に一括選択を行うことができます。そこまで頻繁に使用するわけではありませんが、でも覚えておくと意外と役だったりします。「あー、ここら辺のサブグループ解析は使わないことにしたから、Scriptを走らせた時に反応しないようにしたいな」って時。#で該当するコード一体をコメントアウトしてあげる必要がありますが、全ての行にいちいち#を入力していくのはとっても面倒です。そんなとき、該当するコード全てを縦に一括選択し、冒頭にカーソルを合わせて、一度だけ#を入力してやれば、いっぺんにコメントあるとすることができます。cを使ってやると便利です。これをすると、カーソルが行のどこにあったとしても、その先頭に#を入力してコメントアウトしてくれます。先頭に#を勝手に入れてくれます。Packageのヘルプを表示Rでは多種多様なパッケージを使い分け、コードを書いていくことになります。私もそれなりに頻繁にRを使っていますが、たまに「あれ、このパッケージのこの関数、どんな引数だっけ?」とか、「あれ、あの機能はどの関数だったっけ?」なんてのは日常茶飯事です。その度にGoogleに飛んで、パッケージ名を入力して、説明記事を開いてなんてしてたら、面倒でしょうがないですよね。そんな時は、?パッケージ名を入力してやれば、Rの画面内にパッケージの解説を開いてくれます。こちらは、多重代入法を使う際に用いるパッケージ、mice()のヘルプ。画面上には写っていませんが、この下にもずらーっと丁寧な解説が並んでいて、わざわざGoogle先生に聞かずとも、R上でパッケージ調べを完了することができます。先ほど紹介したヘルプですが、「いやー、でもCode見るだけじゃ、走らせた時にどんな動きをするかイマイチわかんないんだよね」という声もあるでしょう。大丈夫!!!なんとそのヘルプの一部、実際に参考例としてCodeを走らせることができちゃいます。こちらはggvis()というインタラクティブなグラフを描くためのパッケージのヘルプです(ここでは深入りしませんが、ggvis()ちゃんもとんでもないポテンシャルを秘めたパッケージなので、また改めて詳細を説明します)。ヘルプの下には、だいたいExampleというCodeの実例が添付されています。こちらを全選択して、CodeをRunしてあげると、じゃじゃーーーん!なんと、実際にCodeを走らせたかのようにシュミレーションしてくれるんですね。R、あんた、どこまでっ...未だかつて、こんなに利用者のことを考えてくれる解析ツールが存在しただろうか...「いやー、それでもまだわかんないよ、もっといい感じの説明ないの?」さすがにそこまで至れり尽くせりというわけにはいかないので、これ以上のヘルプを求めるのは酷というものです。諦めて、一つひとつGoogleで探していきましょう。browseVignettes()で更なる解説をRには、Vignettesと呼ばれるパッケージごとに記載される詳細な取り扱い説明書があります。Vignettesでは、ヘルプには書ききれないさらに詳細な使用例だったり、グラフだったりを記載してくれています。browseVignettes(“パッケージ名”)で、そのパッケージのVignettesの一覧に飛ぶことができます。browseVignettes("naniar")と打てば、自動でブラウザから検索されて、こんな感じで、Vignettesの一覧が表示されます。HTMLのとこを開いてみればいいでしょう。パッケージによってはVignettesが準備されていないものもありますので、その場合はGoogle先生に聞いて自力で調べるしかないでしょう。折りたたみセクションで視認性向上RのCodeは、Wordと同じようにセクションを振ることができます。ショートカットは以下です。*番号は自動ではつかないので、手動で入力してます。便利なことに、このセクション、折り畳めちゃうんですよね。医療大規模データを解析していると、長々と同じようなコードを書いていくことがよくあります。感度分析やサブグループ解析を複数回やると、ちょっとモデルに投入する変数が違うだけで、あとはほぼ同じようなCodeがずらっと並ぶなんてことがよくあるので、一瞬見ただけでは「あれ、あの解析どこだ?」と迷子になっちゃうんですよね。前もお伝えしましたが、RのCodeはとにかく書き間違えがないように、シンプルかつ分かりやすくする必要があります。モデルを10個も作ったような際には、論文投稿して6ヶ月後のレビュワー対応のために再度スクリプトを開くと、もう何がなんだか頭のなか大混乱なんてことはよくありました。Codeを書いているときには、「多少分かりにくくても、このCodeでやってることは絶対忘れない、見れば思い出せる」とか思うかもしれませんが、安心してください、絶対に思い出せません。「自分を信じない」、これはCodeを書く際の鉄則です。Codeのダブルチェックをする際にも、セクション別に分かれていて視認性が高かった方が、レビューしてくれる人の負担も大幅に減りますしね。このセクション機能は絶対に使った方が良いと思います。ちなみにこのセクション、Source画面の下にある”#”マークのタブを押せば、自由自在に行き来することができます。Codeが長くなってくると、「あれ、あのCodeどこいった」とついついスクリプトを上から下まで大冒険してしまいがちになるので、基本はこちらのセクション一覧を使って行き来した方が良いでしょう。oでSource画面の右側にもセクション一覧を表示することができます。医療大規模データを解析していると、プロジェクトのフォルダにどんどん色んなファイルが保存されていきます。オリジナルのCode、オリジナルのデータセットに対して、データセット2以降ができたり、抽出したグラフやエクセルが溜まっていったり。気づけばフォルダがとんでもない長さになっていたなんてこともよくあります。「複数のサブグループ解析の結果が、どのグラフに対応するかわからなくなってしまった」なんてこともあったりします。不要なデータセットやグラフを削除しているうちに、削除してはいけないオリジナルのスクリプトやデータセットまで削除してしまったなんてことになれば、最悪ですよね?そのような事態を避けるために、私は同じプロジェクトでもタイプ別にファイルを管理しています。データの読み込みや抽出ごとにパスを変えないといけないのでやや面倒ですが、このおかげでかなりファイル管理がしやすくなりました。Backupファイルを作るのは強くお勧めです。私は絶対に削除してはいけないオリジナルのスクリプトとデータセットは、このBackupフォルダにも保存するようにしています。データセットはそのまま入れたままで、スクリプトの方はその日の作業が終わったときに、Codeファイルに更新された最新のものをコピペするようにしています。TabでCodeを簡単に呼び出しRユーザーにとって、最も仲の良いキーボードのボタンはどれか?それはtabボタンである。Rの猛者勢であるかどうかは、tabボタンの表記が押し過ぎで擦り切れているかどうかで判別できるとかできないとか...という冗談はさておき。パッケージ名や変数名、データセット名を入力するときに、いちいち最初から最後まで入力していたら、面倒なことこの上ないですよね。そんな時は、冒頭の何文字かを入力した段階で、スッターーーーン!とtabボタンを押してやりましょう。予測変換してくれます。このtabボタン、ありがたいことに関数内の引数も予測で呼び出してくれるんですよね。これは、mice()という多重代入法を行う関数を呼び出すために、miまで入力してtabボタンを押した上代です。これでパッケージ名のmice::を選択し、さらにその中のmice()関数を見つけるために、miを入力。すると、こんな感じでRが「ほら、これが欲しいんだろ?」と言わんばかりにmice()関数を提案してくれますので、選択。そこから、もう一度tabボタンを押すと、mice()関数の引数一覧がこんな感じで提案されます。これがマジで楽なんですよ。引数ってもちろんパッケージごとに違うので、「あれ、この関数の引数はなんだったかな?」と記憶喪失になることも日常上茶飯事なのですが、こんな感じで引数を出してもらえると、「あー、はいはい」と思い出せます。こいつめっちゃ賢くて、上の引数から一つを選択して、入力し、再びtabボタンを押すと、残りの引数一覧をまた出してくれるんですよね。一度入力された引数は除外して表示してくれるから、ダブって入れる心配はなし。「tabボタン使ってなかったよー」って人は、騙されたと思って使ってみてください。楽さにR生活が激変するはずです。日付データを一瞬で入れる医療大規模データの解析は、短くて数週間、長いときには数ヶ月かかることもあると思います。日を跨いで作業していると、「作業日を入れておこう」みたいな気持ちになることもあるかもしれません。そんな時も、とあるショートカットを使えば、一瞬でコメントアウトした作業日を差し込むことができます。Enterこれだけで、いちいち年月日時を入れる手間が省けます。回帰分析の結果を綺麗にTableにするみなさん、Rで行った回帰分析の結果、いつもどうやって論文投稿用のTableに変換していますか?私はいつも、write.csvで抽出して、その後はエクセルで体裁を整えています。論文投稿時はともかく、共著者の方にチェック頂くたびに、こうしてTableを整えているとかなり時間が消費されちゃうんですよね。1時間くらいかかって関連するTableを整えても、共著者チェックで「この変数も追加したら?」、「対象者の除外基準はこうしたら?」と助言を頂いて、解析やり直しなんて当然のようにあるので、Tableを整えることごときでそんなに時間を使いたくない、というのが正直なところだと思います。いって、write.csvで吐き出された乱雑なエクセルをそのままお見せするのも失礼ですし。そんな時、私はこちらのパッケージでサクッと見た目の良いTableを作ることにしています。T))こうすると、自動でこんな感じに見目麗しいTableを吐き出してくれます。Tにすると、ご覧の通りTableの下にモデルを添付してくれます。これを知ってから、「あー、どうせ解析やり直しになるのに、なんでこんな手間かけてTable作ってんだ」という不満から解消されたので、”parameters”パッケージには本当に感謝しています。dで行ごと一括削除できます。終わりにいかがでしたでしょうか?Rは無限の可能性を秘めているので、きっとこの世には私の知らないTipsも存在するはず。ブログに追記しますので、みなさんも「これは凄いぞ!」というとっておきTipsがありましたら、ぜひぜひ教えてくださいませ。こちらの記事では研究者が勧める研究お役立ち本を紹介しています。Want方式を採用しています。「勉強になった!」、「次も読みたい!」と本ブログに価値を感じてくださった場合は、以下のボタンをクリックし、ご自身が感じた価値に見合うだけの寄付を頂戴できますと幸いです。価値を感じなかった方、また学生さんなど金銭的に厳しい状況にある方からのご寄付は不要です。疫学専門家このブログのモットーは『研究ライフをほんのり豊かに』。疫学専門家このブログのモットーは『研究ライフをほんのり豊かに』。〜研究生活をほんのり豊かに〜.ホームシェアメニューTwitterTOPへ。