zip になってるshape ファイルをRのみの操作でダウンロードして扱いたい

という相談を受けた。
昔は地図を扱うときにsp というパッケージを使っていたが、最近ではsf が流行りだそうだ。
notchained.hatenablog.com
インタラクティブにしたければleaflet があるが、普通にプレゼンとか論文の図にしたい、ということでsf を使いたいらしい。
そもそもsf を使うのにいろいろ準備しないといけなくて、ubuntu ではgdal が2.0.0 以上でないとだめなようで、apt-get するのにもppa を更新して最新のものがインストールされるようにしないといけない。
How To Install GDAL/OGR Packages on Ubuntu — mothergeo 0.0.1 documentation

質問ではダウンロード先がzipになっている。
統計GISデータダウンロード | 政府統計の総合窓口
Pythonならzipのままデータを扱ってなかのデータ(csv だったり)を扱うことができたはずだが、Rではやったことがない(あったかもしれないが記憶にない)ので、ローカルにダウンロードしたものを解凍してshpファイルだけ読み込んだらRからファイルを削除するコマンドを実行する、というなんとも言えない作業をすることにした。
1. Simple Features for R • sf

library(sf)
library(stringr)

# 命名規則がよくわからなかったので5ファイル分取ってみる
dlfiles <- sprintf("https://www.e-stat.go.jp/gis/statmap-search/data?dlserveyId=A002005212015&code=131%02d&coordSys=1&format=shape&downloadType=5", 1:5)

sh <- vector("list", length(dlfiles))
for(f in seq(dlfiles)){
 # Download .shp data
 u_shp <- dlfiles[f]
 fname <- sprintf("%02d.zip", f)
 download.file(u_shp, fname)
 unzip(fname)
 sh[[f]] <- st_read(list.files(pattern="shp"))
 file.remove(list.files(pattern=gsub(".shp", "", list.files(pattern="shp")))) # ほかを消す
}

f:id:MikuHatsune:20200607003039p:plain

こんなことをしていたら日本地図を扱う必要が出てきたので逆に聞いたら、jpndistrict というパッケージを教えてもらった。
jpndistrict package | R Documentation