rlistパッケージはリストのデータハンドリングに便利
大抵データフレームで扱うのだが、JSONのデータを読み込む際などリストで扱わざるを得ない時がある。
で、リストのデータハンドリングをよしなにやってくれるrlistというパッケージがある。
http://renkun.me/r/2014/06/26/rlist-a-new-package-for-working-with-list-objects-in-r.html
list.hogehogeという形で便利関数が色々と入っている。
以下は一例。
library(rjson) # json読み込み library(dplyr) library(rlist) # http://oku.edu.mie-u.ac.jp/~okumura/stat/rjson.html を参照 > fromJSON(file="http://radioactivity.nsr.go.jp/data/ja/master/prefectures.json ") -> rad_data # 上記データのうち県コードが30以上の県の一文字目を取り出す > rad_data$prefectures %>% list.filter(code>=40) %>% list.select(name) %>% list.map(substr(., 1,1)) [[1]] [1] "福" [[2]] [1] "佐" [[3]] [1] "長" [[4]] [1] "熊" [[5]] [1] "大" [[6]] [1] "宮" [[7]] [1] "鹿" [[8]] [1] "沖" # 同じことをdplyrでやってみる > rad_data$prefectures %>% do.call("rbind", .) %>% as.data.frame(., stringsAsFactors=FALSE) %>% filter(code>=40) %>% select(name) %>% apply(.,2,substr,1,1) name [1,] "福" [2,] "佐" [3,] "長" [4,] "熊" [5,] "大" [6,] "宮" [7,] "鹿" [8,] "沖"
ちなみに最近はjsonliteパッケージがJSONからデータフレームによしなに変換してくれたりもするけど今回は割愛した。
https://www.opencpu.org/posts/jsonlite-a-smarter-json-encoder/