64 ビット Windows で 64 ビット R を使用しています。しかし、次のステートメントを実行すると
fi <- ff(vmode="integer", length=2147483648)
Rは次のエラーメッセージを生成しました
length must be between 1 and .Machine$integer.max
これは 64 ビット R では意味がありません。この制限を回避する方法はありますか?
64 ビット Windows で 64 ビット R を使用しています。しかし、次のステートメントを実行すると
fi <- ff(vmode="integer", length=2147483648)
Rは次のエラーメッセージを生成しました
length must be between 1 and .Machine$integer.max
これは 64 ビット R では意味がありません。この制限を回避する方法はありますか?
パッケージのソースを変更/再コンパイルすることで問題を解決しました。
ff の多くの機能の中で、ff オブジェクトを作成し、get/set 添字メソッドを呼び出すだけでよかったので、私の範囲は非常に狭く、これを一晩で行うことができましたが、ソースを非常によく整理した元の作成者にすべての功績が認められました。 . 実際、著者はこの問題に十分に備え、さまざまなタイプのインデックスとサイズの C マクロを作成しました。Cマクロを使ってやりたいことをやっただけです。
これが私がやったおおよそのことです。
new
。ff.h では、次のマクロとそれに対応する ff.cpp の部分を再定義しました。
#define FF_DECL_TYPE(NAME,TYPE) \
FF_DECL_TYPE2(NAME,TYPE,int,int) \
FF_DECL_TYPE2(NAME##_d,TYPE,double,double)
r_ff.c の r_ff_new メソッドで、すべての *_new 関数を *_d_new に置き換え、len と pagesize に asInteger の代わりに asReal を使用します。
他にもやるべきことがあると確信していますが、最初のテストでは、上記の質問のステートメントを実行でき、R で配列の任意の要素を取得/設定できました。私の目的は、たとえば 30 GB を前処理して分析することです。 Rを離れずにデータキューブ。そして私はこれに近い。