Rを理解していれば、オブジェクトをメモリに一時的にコピーするということです。グローバル環境内のオブジェクトが大きすぎてコピーできても、コードを単純化するために関数を使用するにはどうすればよいですか?または、機能を操作するために大きなオブジェクトの必要な部分だけをサブセット化することをお勧めしますか?オブジェクトのコピーではなくグローバル環境でオブジェクトを使うことをr関数に要求する
例
# load two objects with 10 million rows and 500 columns
big.object.1 <- readRDS(file = "previously.created.dataframe.1")
big.object.2 <- readRDS(file = "previously.created.dataframe.2")
# method 1 with memory use of ~xMB?
big.object.1$recoded.column <- ifelse(big.object.1$old.column > 0,
big.object.1$recoded.column * 2,
big.object.1$recoded.column * 0.5)
# method 2 with memory use of ~2xMB?
new.column_function <- function(data, old.col, recoded.col) {
data[recoded.col] <- ifelse(data[old.col] > 0,
data[recoded.col] * 2,
data[recoded.col] * 0.5)
}
new.column_function(data = big.object.1,
recoded.col = 400,
new.col = 401)
コードが機能せずに複雑ですが、メモリが機能を持つ問題であるベストプラクティスは何ですか?大きなオブジェクトのコピーを避けるにはどうすればよいですか?
メモリがあなたのdata.frame.':= =で問題になったときに 'data.table'を試してみて、カラムのサブセットを参照によって素早く追加、削除、更新することができます。 – myincas
@ incas56、答えとして簡単な例を挙げられますか? data.frameをdata.tableに変換してから、上記のようにdata.tableを操作することもできますか?ありがとう。 – jtd