sfクラスからSpatial*****DataFrameクラスへの変換
Rにおけるジオメトリデータの操作は今後sf
パッケージが主流になるらしい。
http://notchained.hatenablog.com/entry/2017/01/06/213333
開発が活発なためせっかく整備したコードが今後も使えるという保証はないため, 利用に少しためらいもあるが,最近少し使っている。
sfクラスからSpatial***DataFrameクラスに変換する際のメモである。
通常は以下のようにas(., "Spatial")
で従来のSpatial****DataFrameに変換することができる。
> nc <- st_read(system.file("shape/nc.shp", package="sf"), quiet = TRUE) > > class(nc) [1] "sf" "data.frame" > methods::as(nc, "Spatial") %>% class [1] "SpatialPolygonsDataFrame" attr(,"package") [1] "sp"
しかし,tbl_df
クラスも持つ場合にはエラーが生じてしまう。
その場合は以下のようにして,クラスをsf
, data.frame
にすると解決できる。
nc %>% `class<-`(c("sf", "data.frame")) %>% methods::as(., "Spatial")