こんにちは、受託コンサルティングチームの 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, ...) でも保存できるので、都合の良いものを選んでいただければと思います。
まとめ
変数を保存する方法は複数あるので、状況に応じて使い分けるのがベスト!