R言語の使っていない変数の削除の例を紹介します。
Rで大きなデータを使っているとメモリ不足に陥ったり、実行速度が遅くなったりすることがよくあります。
Rでは一度作られた変数は自分で削除するまで、キャッシュとして保存されるため実行を繰り返すごとにメモリがキャッシュで埋め尽くされてしまいます。
「エディターの挙動がかくかくしてるなぁ」と思ったら使っていない変数を一度、消去してみるのがお勧めです。
この記事で扱うRスクリプトは以下からダウンロードできます。
R言語 オブジェクトの削除
変数の削除
では早速、変数の削除の例をみていきます。
変数を削除するには次の関数removeまたは、rmを用います。
rm (…, list = character(), pos = -1, envir = as.environment(pos), inherits = FALSE)
任意のオブジェクト(変数)を削除することが可能です。
removeとrmの引数は以下の通りです。
... | 削除するオブジェクトの名前。character型として渡す場合は""をつける。 |
list | character型のベクトル。削除するオブジェクトの名前のベクトル。 |
pos | どのディレクトリのオブジェクトを削除するか。デフォルトだとカレントディレクトリ。 |
envir | 使用するenvironment。 |
inherits | environmentのフレームを調べるかどうか。 |
それぞれの関数の最初の引数...以外にも、引数listに削除したい変数名を渡すことで変数の削除を行うことができます。
list=ls()と引数を与えることですべての変数を消去することができ、キャッシュを無くしたいときに便利です。
実行例
オブジェクトを削除する例をいくつか紹介します。
変数nを削除するには、次のように関数removeまたはrmの引数にオブジェクトを渡します。
1 2 3 4 5 6 7 8 9 | #オブジェクトの削除 n <- 10 remove(n) n <- 10 remove("n") #文字列の場合 n <- 10 rm(n) |
変数nを宣言すると、次のようにR studioのEnvironmentにnが加わります(筆者はエディターにR studioを用いているので、R studioの画像を載せました)。
関数removeまたはrmでnを削除すると、次の画像のようにEnvironmentからnが削除されます。
2つ以上のオブジェクトを削除するときは、削除したいオブジェクト全てを関数の引数に渡すだけです。
1 2 3 4 | #複数削除する場合 a <- "a" b <- "b" remove(a, b) |
2行目と3行目でaとbを宣言するとEnvironmentにaとbが加わります。
関数removeを実行するとaとbが次のように無くなります。
最後に、すべてのオブジェクトを削除しキャッシュを整理する方法を紹介します。
次の4つのオブジェクトを例に全キャッシュを削除する例について見ていきます。
1 2 3 4 5 | #全オブジェクトの削除 n <- 10 a <- "a" b <- "b" true <- TRUE |
ここでは4つしか変数を扱いませんが、実際のデータ解析においては100変数近く扱うこともあり、上で示したように関数の引数に全変数名を列挙して削除するのは非常に面倒です。
全変数を一気に削除したいときは、関数removeまたはrmの引数listをls()とします。
関数lsは全変数名を返すため、このように引数を与えてあげることですべてのオブジェクトを削除することが可能です。
1 | remove(list = ls()) |
まとめ
R言語でオブジェクトを削除する関数とその実行例について見てきました。
関数removeまたはrmで変数を削除することができます。
引数list=ls()とすることで全変数を削除することができ、キャッシュを消去することができます。