2017-06-10 16 views
1

Rの一部をハードディスクに保存する必要があります。dataframesDFのディメンションはかなり大きい(〜50K行と> 50列)ので、私はそれらのうち200K以上を持っているので、ハードドライブのスペースを節約するためにそれらを圧縮して保存したいと思います。R大容量のデータフレームをハードドライブに圧縮保存する

はこれまでのところ、私はそれぞれ、〜60MB20 MBを取るなど.CSVrdscompress = "gzip")のようなタイプのカップルを、試してみました。私はそれらをより効率的に圧縮するいくつかの代替方法があるのだろうかと思います。

答えて

4

あなたのデータに非常に特殊な構造がない限り、saveRDS()よりはるかに優れているとは思いません。代替の圧縮オプションの1つを使用することでわずか10%の利点が得られます。私はgzipではなくxz圧縮を使用して12.7Mから10.5Mになります(私の例ではCSVは43Mです)。

の設定例:

set.seed(101) 
m <- matrix(runif(5e4*50),ncol=50) 

(これは行列ではなく、データフレームです。私はそれが大きな違いを行いますが、あなたは試すことができ疑う)

書き込みCSVファイル:

write.csv(m,file="tmp.csv") 
s_csv <- file.info("tmp.csv")["size"] 

圧縮オプションを試してみてください:

c_opts <- c("gzip","bzip2","xz") 
ss <- sapply(c_opts, 
     function(c) { 
      saveRDS(m,compress=c,file="tmp.rds")  
      return(file.info("tmp.rds")["size"]) 
}) 

結合してMBに変換:

unlist(c(csv=s_csv,ss))/2^20 
## csv.size gzip.size bzip2.size xz.size 
## 43.28464 12.69796 11.32605 10.46269 
関連する問題