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")
dplyrにおける文字コード問題が少しは改善されそう
Rにおける文字コードに関して多くの人々が悩まされている.
例えば,
http://notchained.hatenablog.com/entry/2016/04/29/222453
「Why are you using SJIS?」
「Why are you using UTF-8?」
2種類のことばがあり,処理によってうまく扱う必要があるという苦痛。
そんななか,ついに`dplyr`については,問題が解決するようである。
https://github.com/tidyverse/dplyr/pull/2382
issueには文字コードに関する問題外が多く寄せられているが`dplyr`では改善されないような雰囲気を感じていたが,
これまで悩まされていた文字コード問題が少しは?解決されるようでうれしい限りである。
Kirill Müllerさんに感謝。