2014-01-21 71 views
0

我有一個關於ff程序包函數的問題。 我在我想加載的特定目錄中有一個ff對象。這是我在用的:未使用ffload創建副本

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

隨着OVERWRITE = TRUE,該對象的副本將被保存在一個TMP文件夾和對象將是從這個目錄負載:

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

但如果你不需要你的對象的副本,你需要把FALSE覆蓋。如果這是第一次加載你的ff對象,它會在tmp文件夾中創建一個副本,即使overwrite = FALSE也是如此!然後,我刪除了副本,並重新加載第二次的對象,我有以下消息,並沒有複製:

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

的問題是,我有很多的大文件的工作,我不你想創建副本!我能做什麼 ?

回答

0

也許這是好事,給約ffload的解釋你的情況

你在你的〜/文檔/ Data目錄下2個文件。一個叫Object,另一個叫Object.ffDataObject.ffData包含帶有原始數據的ff文件。 Object包含一個R工作空間,其中包含虛擬 ff文件的屬性(例如,指向ff文件的指針等級),根據您的數據結構,它只有幾個Kb。

ffload解壓它們包含在Object.ffData到您所創建的FF文件的文件夾的FF文件(見getOption("fftempdir") - 對於你的情況,這是在TMP/Rtmpsj1b2f文件夾如果指定rootpath參數ffload,你。可以將ff文件解壓縮到另一個目錄中,如ffload("Object", overwrite=TRUE, rootpath = "/home/myname/myfolder").ffload的覆蓋參數表示如果你正在解壓縮的ff文件已經存在於該目錄中,它將覆蓋它。用ffload載入你的文件,你也在你的R會話中加載虛擬部分,這是一個你已經命名爲Obs_zone_212_19700801_19750731(見ls())的對象。警告你看到的是,當你裝載你的新數據時,它不會覆蓋這個對象。所以你需要在ffloading之前rm(Obs_zone_212_19700801_19750731)擺脫警告。

希望這會有所幫助。 如果您的數據是ffdf對象,您還可以查看包ffbase中的save.ffdf。這不會壓縮您的數據,但會將其保持在磁盤上。

+0

謝謝你的回答!所以實際上我的問題來自ffsave。在加載ff對象之前,我使用ffsave創建了它們。當我使用ffsave時,它會在我選擇的目錄和tmp中的另一個文件夾(Rtmpsj1b2f文件夾)中創建Object.RData和Object.ffdata。如果我不想擁有這個最後一個文件夾,我需要在ffsave中添加我想要的roothpath? – Chika

+0

您應該在創建ff對象之前將fftempdir文件夾設置到您要放置ff文件的文件夾。選項(fftempdir =「路徑/到/你的/文件夾」) – jwijffels

+0

好吧!當我補充說,我有錯誤:無法打開文件'/ tmp/RtmpBHIZfb/file1a8256d52308':沒有這樣的文件。看起來,即使我問了一個特定的文件夾它不起作用 – Chika