Rの冒頭記載コードの統一化:{pacman}の活用、環境の初期化とメモリ領域の解放

目次
  1. {pacman}の活用
  2. 環境の初期化とメモリ領域の解放
  3. 冒頭コードのまとめ

{pacman}の活用

R のパッケージ管理ツールの一つに{pacman}パッケージ((UMIN に wordpress でホームページを立ち上げる(3)MySQL の初期設定. 基礎医学教育研究会ノート. Accessed February 21, 2021. https://plaza.umin.ac.jp/kikkenlab/note/umin-wordpress-03/))というものがあります。 install.packages() や library() を羅列することなく、pacman::p_load() の一行でスマートに記載することができます。

主な使い方についてはこちら((pacman でパッケージのインストール・ロードを簡単にする. Published December 15, 2018. Accessed February 21, 2021. https://blog.atusy.net/2018/12/15/pacman/))とこちら((“install.packages()”するのはこれが最後!Rのパッケージ管理には「pacman」を使おう. Qiita. Accessed February 21, 2021. https://qiita.com/taiyodayo/items/e69d997754d55e3d7e4c))の記事が参考になります。

誰かにスクリプトを共有する際は、{pacman}が入っていない場合もあります。その点を加味して、下記のように記載します。

if (!require("pacman")) install.packages("pacman")
pacman::p_load(tidyverse, magrittr, package_n)Code language: PHP (php)

この pacman::p_load() と コメント # の書き方、私もよく使います。各パッケージ名の隣に # で説明のコメントを書くことができるのでおすすめです。 https://t.co/mTbDVGb5eM {pacman}については、よければこちらをご参照ください https://t.co/wi8V16Fo9U pic.twitter.com/VU3cTUhqTt

— Shoei (@shoei05) May 11, 2021

環境の初期化とメモリ領域の解放

もう一点、新しくスクリプトを実行する際に、前の結果が残っていると、エラーに気づかなかったり、誤計算のもとになったりします。そのため、環境の初期化 rm(list=ls()) と、ガベージコレクション(不要になっているメモリ領域を解放)gc() を行います。

コードはこちら((2020年版 Rによるデータ分析メモ. Qiita. Accessed February 21, 2021. https://qiita.com/gnbrganchan/items/f001007098d873e0b0ca))を参考にしました。

rm(list=ls())
gc();  gc();Code language: PHP (php)

ガベージコレクションを2回する理由については、下記に説明がありました。

"gc()は二度続けて行なう方が良いそうである。理由はもっともで、直近の計算結果を保存する .Last.value というオブジェクトが気づかぬままに巨大になっていることがあるが、一度目のgc()でこれが消え、二度目のgc()実行で解放されたメモリーが整頓される、からだそうです。" https://t.co/MQxxY05hos

— Shoei (@shoei05) October 18, 2020

冒頭コードのまとめ

  1. {pacman} の利用
  2. 環境の初期化とメモリ領域の解放

これらを合わせて、私は各スクリプトの冒頭には下記のように記載しています。

rm(list=ls()); gc();  gc();
if (!require("pacman")) install.packages("pacman")
pacman::p_load(tidyverse, magrittr, package_n)Code language: PHP (php)

私は 複合代入演算子 %<>% も使うことが多いため、tidyverseとmagrittrは別に読み込むようにしています。また、RstudioはPCの環境に依存しないDocker上で構築することをおすすめします。こちらの記事もご参照ください。

https://plaza.umin.ac.jp/shoei05/wp/index.php/2020/10/17/56/
この記事は旧サイト(UMIN)から移行したものです。内容は記載の公開・更新時点のものです。