私は C でいくつかの R 拡張機能を作成しています (R から呼び出される C 関数)。
私のコードでは、2 つの異なるデータセットを同時に使用して統計を計算する必要があり、考えられるすべてのペアの組み合わせでこれを実行する必要があります。次に、C 側で計算を続行するには、これらすべての統計 (非常に大きな配列) が必要です。これらのファイルは非常に大きく、通常は 40 GB までです。これが私の問題です。
R によって呼び出された C でこれを行うには、最初にすべてのデータセットを R にロードして、それらを C 関数呼び出しに渡す必要があります。しかし、理想的には、C または Fortran からデータセットに直接アクセスできた場合、次の順序に従って、これらのファイルのうち 2 つだけを同時にメモリ上に維持することができます。
open file1 - open file2 - compute cov(1,2)
close file2
hold file1 - open file3 - compute cov(1,3)
... // same approach
ファイルをロード/アンロードできるため、R では問題ありませんが、C または Fortran を呼び出す場合、ファイルをロード/アンロードするメカニズムがありません。それで、私の質問は、.Rdata ファイルを Fortran または C から直接読み込んで、それらを開いたり閉じたりできるかということです。問題への他のアプローチはありますか?
私が読んだ限りでは、答えはノーです。そこで、Rdata から HDF5 への移行を検討しています。