アメリエフの技術ブログ

Amelieff Staff Blog

【R】解析結果を保存しておく方法 3 選

こんにちは、受託コンサルティングチームの hosor です。

先日買った折り畳み傘がすぐに壊れてしまいブルーな気持ちです。


R で解析している際に間違えて変数を上書きしてしまい、一から解析をやり直すことになってしまった…という経験がある方も多いのではないでしょうか。

今回のブログでは、解析途中の結果を保存しておく方法 3 選ということでご紹介していこうと思います。


保存食

作業環境

  • CentOS Linux release 7.4.1708 (Core)
  • R v4.2.3

1. ワークスペースを保存する

ワークスペースとは、作成した変数の集合のことを指します。

以下のように変数 a, b を作成した後に、save.image() 関数により test.RData としてワークスペースを保存します。

> a <- 1
> b <- 2
> ls()
[1] "a" "b"
> save.image("test.RData")


その後、改めて R を起動した場合でも load() 関数で test.RData を読み込むと、変数 a, b を呼び起こすことができます。

> load("test.RData")
> ls()
[1] "a" "b"


変数をまるごと保存することができますが、データサイズが大きくなることが多いので注意が必要です。


補足

R を終了する際に実行する q() 関数でも、ワークスペースの保存ができます。

> q()
Save workspace image? [y/n/c]:


ワークスペースを保存するか聞かれるので、ここで y と入力してエンターを押すと .RData として保存されます。

ちなみに .RData は R を立ち上げる際に自動的に読み込まれます。

2. オブジェクトを保存する

オブジェクトとは、作成した変数の 1 かたまりのことを指します。

以下のように変数 a を作成した後に、saveRDS() 関数により test.obj としてオブジェクトを保存します。

> a <- 1
> saveRDS(a, "test.obj")


その後、改めて R を起動した場合でも readRDS() 関数で test.obj を読み込むと、変数 a を呼び起こすことができます。

> a <- readRDS("test.obj")
> a
[1] 1


上記はとてもシンプルな変数ですが、Seurat オブジェクトのような複雑なオブジェクトも保存可能です。

3. 適切なデータ形式で保存する

例えば、マトリクス (行列) を csv ファイルとして保存する、というようなことです。

以下のように変数 m を作成した後に、write.csv() 関数により test.csv として csv ファイルを保存します。

> m <- matrix(1:12, nrow = 3, ncol = 4)
> colnames(m) <- c("A", "B", "C", "D")
> rownames(m) <- c("first", "second", "third")
> m
       A B C  D
first  1 4 7 10
second 2 5 8 11
third  3 6 9 12
> write.csv(m, "test.csv")


その後、改めて R を起動した場合でも read.csv() 関数で test.csv を読み込むと、変数 m を呼び起こすことができます。

※ read.csv() 関数の引数を設定する必要があります。

> m <- read.csv("test.csv", row.names = 1, header = TRUE)
> m
       A B C  D
first  1 4 7 10
second 2 5 8 11
third  3 6 9 12


ワークスペースやオブジェクトとして保存するとデータの中身を手元で見ることができませんが、上記のように csv ファイルとして保存すると手軽に確認することが可能です。

もちろん csv ファイル以外のデータ形式 (tsv, xlsx, ...) でも保存できるので、都合の良いものを選んでいただければと思います。

まとめ

変数を保存する方法は複数あるので、状況に応じて使い分けるのがベスト!