如何将 1000+ 个结构相似的 json 文件的 zip 文件读取到 R 中的单个数据帧中



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

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

rio包可以毫不费力地将 zip 文件的内容读取到数据帧列表中。

首先,让我们创建一个可重现的示例,也使用 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 文件的 zip 文件。要导入,我们只需:

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

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

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)
}

最新更新