1,344個の一意の文字列のベクトルxがあります。順序に関係なく、3つの値のすべての可能なグループを提供するマトリックスを生成し、それをcsvにエクスポートしたいと思います。
64ビットUbuntuを使用したm1.largeインスタンスのEC2でRを実行しています。combn(x、3)を使用すると、メモリ不足エラーが発生します。
Error: cannot allocate vector of size 9.0 Gb
結果の行列のサイズはC1344,3=403,716,544行と3列です。これはcombn()関数の結果の転置です。
bigmemoryパッケージを使用して、big.matrixでバックアップされたファイルを作成し、combn()関数の結果を割り当てることを考えました。事前に割り当てられた大きなマトリックスを作成できます。
library(bigmemory)
x <- as.character(1:1344)
combos <- 403716544
test <- filebacked.big.matrix(nrow = combos, ncol = 3,
init = 0, backingfile = "test.matrix")
しかし、値test <- combn(x, 3)
を割り当てようとすると、同じようになります。Error: cannot allocate vector of size 9.0 Gb
の結果を強制しようとしましcombn(x,3)
たが、combn()関数がエラーを返しているため、big.matrix関数も機能しないと思います。
test <- as.big.matrix(matrix(combn(x, 3)), backingfile = "abc")
Error: cannot allocate vector of size 9.0 Gb
Error in as.big.matrix(matrix(combn(x, 3)), backingfile = "abc") :
error in evaluating the argument 'x' in selecting a method for function 'as.big.matrix'
これらの2つの機能を組み合わせて、必要なものを取得する方法はありますか?これを達成する他の方法はありますか?ありがとう。