メモリに乗らないデータを分割して読み込んでくれるパッケージ

最近readrパッケージが1.0になった。
https://blog.rstudio.org/2016/08/05/readr-1-0-0/
この中で「実験的だが」という断りつきでread_csv_chunked関数が最後に紹介されている。
メモリに乗らないようなデータを分割して読み込むことができる。
baseのread.**関数群も読み込み行数および読み込み開始位置は指定できたので、今までできなかったというわけではないが、1回の読み込みデータ数を指定すればあとはfor文を書かずともよしなにやってくれるので楽ではある。
しかも毎回の読み込み時に呼び出されるコールバック関数も指定できる。
以下は毎回20ずつデータを読み込み、そのたびにstr関数を呼ぶ例。

library("readr")
read_csv_chunked(file=readr_example("mtcars.csv"), callback=str, chunk_size = 20)

chunkedパッケージの方が便利かも

そういえばこういうコンセプトのパッケージ、UseR!2016で話題になっておりRワカラングでも盛り上がっていた憶えがある。
盛り上がっていたことしか覚えていなくて難儀したが、chunkedパッケージというのがそれ。
(レポジトリ)
https://github.com/edwindj/chunked
(UseRの発表資料)
https://github.com/edwindj/chunked/blob/master/useR2016/lightning.pdf
LaFパッケージを内部的に利用しつつ、dplyrの思想に合うように作られている。
以下は公式のヘルプを転載したもの。

library("chunked")
  read_chunkwise("./large_file_in.csv", chunk_size=5000) %>% 
  select(col1, col2, col5) %>%
  filter(col1 > 10) %>% 
  mutate(col6 = col1 + col2) %>% 
  write_chunkwise("./large_file_out.csv")

最近忘れっぽい&Rワカラングだとすぐ流れてしまう、のでメモしておく。
誰か解説書いてください。