私はLinuxマシンにhdf5パッケージを正常にインストールしました。私は今、ループ内の多数のhdf5ファイルからデータを読み込み、時系列を作成したいと考えています。各hdf5ファイルは異なる時刻に対応しています。多くのファイルを読み込んだら(1000以上)、Rはあまりにも多くのファイルが開いていると言う。私はループを続けることができるようにそれらを閉じる方法を見つけたいと思います。ここでは、コードは次のとおりです。Rでロードした後、hdf5ファイルを閉じるにはどうすればよいですか?
fdate <- "200605312355" # the first date for my test loop
fmax <- 1400
arr <- vector()
for (i in 1:fmax){
fname <- paste(fdate,"_.h5") # path of h5 file
fid <- hdf5load(fname) # fid = NULL
arr[i] <- somevariable$data_array[lon,lat]
# would like to close the file here
fdate <- newdate(fdate,60*5) # a function that increments the date by seconds.
}
HDF5パッケージには、それが物事をクリーンアップする可能性があるように見えますが、それはファイル識別子を必要とする関数のhdf5cleanupが含まれています。上記のコード内のfidはNULLを返します。代わりにhdf5cleanup(fname)というファイル名を挿入しようとすると、Rは中止されます。おそらく、hdf5loadがファイルを閉じて失敗するはずです。その場合、system()コマンドなどを発行して接続を閉じる方法はありますか?
ちなみに、showConnections()は何も返しません。文字通り、 "descriptionクラスmode text isopen can read"というヘッダ名だけが返されます。
私の質問は短く: hdf5load()をロードした後、R内のhdf5ファイルへの接続を閉じるにはどうすればよいですか?
私は 'R'を中断していますので、' hdf5'パッケージのメンテナーに連絡してください。メンテナーは、ファイルを閉じるための正しい呼び出しをあなたに伝えることもできます。 –