Rでオブジェクトをファイルに保存または読み込みする方法を記載します。
長時間の計算による解析結果をファイルに保存しておくことは、解析手続きの分割が行えるため、とても役に立ちます。
解析手続きの分割について、解析Aの結果を解析Bで用いる場合という例でご説明します。
同じスクリプトで解析Aと解析Bを記載すると、解析Bを変更した際に再度解析Aを実行しないといけません。解析Aの処理時間が短い場合は問題ありませんが、長い処理時間がかかる場合は効率が悪くなります。そのため、ある程度重い処理を実行するときは、解析手続きの分割を考えた方が良いと考えます。
保存
保存はsaveRDS関数を用います。
> # 計算結果をobjに格納
> obj <- lm(Sepal.Length ~ Sepal.Width, data = iris) > # objの表示
> obj
Call:
lm(formula = Sepal.Length ~ Sepal.Width, data = iris)
Coefficients:
(Intercept) Sepal.Width
6.5262 -0.2234
> # "lm.obj"として保存
> saveRDS(obj, file = "lm.obj")
読み込み
読み込みにはreadRDS関数を用います。
> # "lm.obj"の読み込み
> obj2 <- readRDS("lm.obj") > # obj2の表示
> obj2
Call:
lm(formula = Sepal.Length ~ Sepal.Width, data = iris)
Coefficients:
(Intercept) Sepal.Width
6.5262 -0.2234
saveRDS関数で作成したファイルを別OSで読み込み
Ubuntu上のRStudioでsaveRDS関数で作成したファイルをWindows上のRStudioで読み込みができるかを試してみました。
Ubuntu上のRStudioの環境設定とWindows上のRStudioの環境設定は、デフォルトのままです。
結果としては、英数字は可能だが、日本語は文字化けをしてしまいました。
UbuntuのRStudioのロケールはja_JP.UTF-8を用いておりますが、WindowsのRStudioのロケールはJapanese_Japan.932であることが原因のような気がします。
ロケールはRStudioのコマンドラインでSys.getlocale関数を実行すれば取得でき、Sys.setlocale関数を実行すれば設定できます。
WindowsのRStudioでja_JP.UTF-8に相当するものを設定できないため、今のところ、日本語の文字化けについては対処の方法が分かっておりません。
R オブジェクトを保存・読み込みする方法