2016-03-22 50 views
2

我有一個data.table,硬盤上保存了3000萬行和15列(大小177 MB,文件1)。我將這些數據加載到R中,處理它,然後再向其添加8列(行保持不變)並將它作爲.RData文件再次保存,但是這次它的大小減少了(144 MB,文件2)。向數據表添加更多列減小.RData對象的大小

這怎麼可能?如果我添加了更多列,不應該增加.RData文件的大小嗎?

編輯:初始文件是data.table(在R),我將它存儲爲硬盤上的.RData(文件1,177 MB)。然後我將它加載回R中,處理它,添加更多的列(行保持不變)並保存回來(文件2,144 MB)。

+2

.RData是一個佔用較少存儲空間的壓縮文件。因此對於存儲R對象更有用。 – MAPK

+1

原始數據的格式是什麼?它是一個文本文件(例如CSV)還是一個'.RData'文件?另外,您可以發佈一個可重現的例子(例如,模擬數據,寫入數據,讀取數據,然後再保存)? –

回答

1

.Rdata help file擴展了MAPK的評論,並指出:

大文件可以大大大小的壓縮減少。一個特定的46MB R對象在2秒內保存爲35MB而不壓縮,在8秒內保存爲22MB的gzip壓縮,在13秒內保存爲19MB的bzip2壓縮,以及在40秒內保存9.4MB的xz壓縮。加載時間分別爲1.3,2.8,5.5和5.7秒。這些結果是指示性的,但相對性能取決於實際的文件:xz在這裏壓縮得非常好。

可以稍後壓縮(使用gzip,bzip2或xz)保存compress = FALSE的文件:效果與使用壓縮保存相同。另外,保存的文件可以在不同的壓縮方案下解壓縮和重新壓縮(有關從R內部執行此操作的方法,請參閱resaveRdaFiles)。

+0

我很困惑 - 這是如何回答OP?即這是如何解釋OP使用更多列獲得更小尺寸的? – eddi

+0

我很確定OP和標題的文本都清楚地表明開始和結束點都是.RData文件 – eddi