16

~20,000x20,000 のデータがあります。速度とメモリの点で効率的にdata.table()を に変換するにはどうすればよいですか?matrix

試してみm = as.matrix(dt)ましたが、多くの警告が表示されて非常に時間がかかります。df = data.frame(dt)非常に時間がかかり、メモリの制限にも達します。

これを行う効率的な方法はありますか?dtまたは、単に行列形式として返す data.table の関数(glmnetパッケージを使用して統計モデルにフィードするために必要)?

as.matrix にラップするだけで、以下のエラーが発生します。

x = as.matrix(dt)

Error: cannot allocate vector of size 2.9 Gb
In addition: Warning messages:
  1: In unlist(X, recursive = FALSE, use.names = FALSE) : Reached total allocation of 8131Mb: see help(memory.size)
  2: In unlist(X, recursive = FALSE, use.names = FALSE) : Reached total allocation of 8131Mb: see help(memory.size)
  3: In unlist(X, recursive = FALSE, use.names = FALSE) : Reached total allocation of 8131Mb: see help(memory.size)
  4: In unlist(X, recursive = FALSE, use.names = FALSE) : Reached total allocation of 8131Mb: see help(memory.size)

私の OS:私は 64 ビットの Windows7 と 8 GB の RAM を持っています。私の Windows タスク マネージャーは、以前は Rgui.exe が 4 GB 以上のスペースを占有していることを示していましたが、それでも問題ありませんでした。

4

2 に答える 2