0

次のような大きなリストを含む .rda ファイルがありました。

[[1]] Null
[[2]] Null
...
[[1000]] (Some data)
...

最初のK空の行 (例では 999 行) はコードのバグにより作成されたため、すべての1:K行を削除することにしました。ファイルを保存した後、サイズが大きくなりました: 以前は <1 GB で、後で >16GB でした。それはどうしてですか?修正方法は?

問題は、リストを編集する前に 1 から までの値があり、編集後に からまでのN値しか含まれていないことだと想像できますが、それほど違いますか? これが問題の場合、インデックスをクリアするにはどうすればよいですか?K+1N

4

2 に答える 2

2

NULL を削除した後、ファイルには別の圧縮タイプが必要になる場合があります。リストが何倍も小さくなったため、異なるはずでしたが、おそらく圧縮解除され、同じ圧縮スキームで再圧縮されました。

から?save

... 保存されたファイルは、別の圧縮方式で解凍および再圧縮できます (R 内から行う方法については、resaveRdaFiles を参照してください)。

したがって、Ben Bolker's answerresaveRdaFilesのオブジェクトを実行すると、かなりのチャンクが小さくなりますz2

file.info("tmp2.rda")[,1]
# [1] 2666373
tools::resaveRdaFiles("tmp2.rda")
file.info("tmp2.rda")[,1]
# [1] 2210736
于 2014-11-02T18:27:51.490 に答える