0

ff パッケージの関数属性について質問があります。ロードしたい特定のディレクトリに ff オブジェクトがあります。これは私が使用しているものです:

setwd(~/Documents/Data)
ffload("Object", overwrite=TRUE)

OVERWRITE=TRUE を指定すると、オブジェクトのコピーが tmp フォルダーに保存され、オブジェクトはこのディレクトリから読み込まれます。

[1] "tmp/Rtmpsj1b2f/clone11876c2c0949.ff"

ただし、オブジェクトのコピーが必要ない場合は、FALSE を指定して上書きする必要があります。ff オブジェクトを初めてロードする場合は、overwrite=FALSE の場合でも、tmp フォルダーにコピーが作成されます。次に、コピーを削除し、もう一度オブジェクトを再ロードしました。次のメッセージが表示され、コピーはありませんでした。

Warning :
In FUN("Obs_zone_212_19700801_19750731"[[1L]], ...) :
did not overwrite object 'Obs_zone_212_19700801_19750731'

問題は、私が大量の大きなファイルを扱っていて、コピーを作成したくないということです! 私に何ができる ?

4

1 に答える 1

0

ffloadあなたのケースについて説明するのは良いかもしれません

~/Documents/Data ディレクトリに 2 つのファイルがあります。1 つが呼び出されObject、別の 1 つが呼び出されObject.ffDataました。データObject.ffDataを含むffファイルが含まれています。ff ファイルの仮想属性 (ff ファイルへのポインターなどのレベルなど) を持つ R ワークスペースが含まれています。これは、データ構造に応じてわずか数 KB です。Object

ffload は、ff ファイルをObject.ffData作成したフォルダーに含まれている ff ファイルを解凍します (参照getOption("fftempdir")- あなたの場合、これは tmp/Rtmpsj1b2f フォルダーにありましrootpathた。ffload に引数を指定すると、ff ファイルを別のフォルダーに解凍できます。ディレクトリ. のようにffload("Object", overwrite=TRUE, rootpath = "/home/myname/myfolder"). ffload の overwrite 引数は、解凍しようとしている ff ファイルがそのディレクトリに既に存在する場合、それを上書きすることを示します. これまでの ff の部分.

ファイルを ffload でロードすると、R セッションで仮想パーツもロードされます。これは、あなたの場合、名前を付けたオブジェクトですObs_zone_212_19700801_19750731(「 」を参照ls())。表示される警告は、新しいデータを ffload するときに、このオブジェクトが上書きされなかったことです。rm(Obs_zone_212_19700801_19750731)そのため、警告を取り除くために、ロードする前に必要があります。

お役に立てれば。データが ffdf オブジェクトの場合、save.ffdfpackage から参照することもできますffbase。これにより、データは圧縮されませんが、ディスク上にそのまま保持されます。

于 2014-01-21T14:35:44.980 に答える