如何将1000多个类似结构的json文件的zip文件读入R中的单个数据帧?

时间:2018-04-13 13:58:31

标签: r json

我知道我已经可以使用jsonlite和rjson了。但是,假设我有一个超过1000个jsons的文件夹。将这些全部读入R数据帧的最佳方法是什么?

json_file <- fromJSON(file = "myjson.json")

2 个答案:

答案 0 :(得分:1)

rio包可以毫不费力地将zipfile的内容读入数据帧列表。

首先,让我们使用rio和内置zip函数创建可重现的示例。

library(rio)

export(data.frame(x=1:2, y=3:4), "foo1.json")
#> Loading required namespace: jsonlite
export(data.frame(x=5:6, y=7:8), "foo2.json")
zip("foo.zip", c("foo1.json", "foo2.json"))

所以现在我们有一个带有一些json文件的zipfile。要简单地导入:

foo_list <- import_list("foo.zip")

现在我们有一个具有相同结构的数据帧列表。现在我们通常会把它们放在一起:

do.call(rbind, foo_list)
#>        x y
#> foo1.1 1 3
#> foo1.2 2 4
#> foo2.1 5 7
#> foo2.2 6 8

答案 1 :(得分:-1)

请注意,这取决于您的.jsons具有相同的标题,允许您轻松地将它们绑定在一起。

lf=Sys.glob("*.json")

combdf <- data.frame(colA=(), colB=())
currdf <- data.frame()

for (i in length(lf)){
  currdf <- fromJSON(file = lf[i])
  combdf <- rbind(combdf, currdf)
}