はじめに
- data.frameのものをJSONファイルに出力するのが目的
- 色々方法がありますが、欲しい形式のJSONにするものが無かったので、ちょっと処理を書いてみた
出力したいJSONの形式
- とあるデータベースへのインポートが楽な以下の形式を目指す
$ head aaa.json
{"Sepal.Length":"5.1","Sepal.Width":"3.5","Petal.Length":"1.4","Petal.Width":"0.2","Species":"setosa"}
{"Sepal.Length":"4.9","Sepal.Width":"3.0","Petal.Length":"1.4","Petal.Width":"0.2","Species":"setosa"}
{"Sepal.Length":"4.7","Sepal.Width":"3.2","Petal.Length":"1.3","Petal.Width":"0.2","Species":"setosa"}
{"Sepal.Length":"4.6","Sepal.Width":"3.1","Petal.Length":"1.5","Petal.Width":"0.2","Species":"setosa"}
<snip>
df to json
df <- iris
head(df)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
vec <- apply(df, 1, RJSONIO::toJSON)
vec %>% gsub("\n", "", .) %>% gsub(" ", "", .) -> vec
write(vec, file = "aaa.json")
- Strategies for formatting JSON output from Rが参考になりましたが、欲しい形式までもうちょい。
- ポイントは、RJSONIO::toJSONを使うところ。jsonlite::toJSONだと、違う形式で出力されるので、うまくいかなかった。
- この記事でも言及されているが、jsonliteが元と同じではない模様