【问题标题】:reading a json file with nested arrays at every line in R在 R 中的每一行读取带有嵌套数组的 json 文件
【发布时间】:2018-04-28 17:49:03
【问题描述】:

我有一个包含 585 个嵌套数组的 json 文件。 585 个数组中的每一个都具有以下结构:

[["12345678", [["12345678912345678", "dummy tweet #hashtag", "2015-05-20 15:33:11", "en"], ["12345678123456781", "dummy tweet again", "2015-05-18 22:08:30", "en"]]]

每个数组都有一个用户id,对应的数组数组有用户的tweet,其中每个数组有tweet id、tweet、日期和语言。

我尝试使用 jsonlite 流在函数中流式传输文件如下test_json = stream_in(file("test.json")) 但我收到以下错误:

Error in (function (..., row.names = NULL, check.rows = FALSE, check.names = TRUE,  : 
  arguments imply differing number of rows: 3189, 607, 219, 3120, 3091
closing file input connection.

然后我阅读了 10 行 test10_json =readLines("test.json", n =10) 对我有用。

现在我想阅读这个 json 并尝试了 fromJSON(test10_json) 但我得到了这个错误:

Error: parse error: trailing garbage
          015-05-06 19:18:35", "en"]]] ["123456789", [["5101600420255
                     (right here) ------^

这意味着当它尝试读取下一个数组/记录(文件的第二行,第二个用户的记录)时会出错。 但是,当我按如下test10_row1 = fromJSON(test10_json[1]) 分别读取每个用户记录时,它会单独读取它们。并创建一个 List of 2

 $ : chr "19211550"
 $ : chr [1:3189, 1:4] 

其中每个 1:3189 都包含一个带有推文 ID、推文、日期和语言的列表。

首先,如果可能的话,我想知道如何在不必读取行的情况下完全读取文件 test.json。

其次,我想在完成第1步之后,如何将所有数组一起解析为R,而不是单独解析。

第三,我想获得一个可以展平的数据框,而不是获取列表列表(对于 585 条记录:585 个列表,每个列表有 2 个列表,每个列表的列表与推文的数量一样多)。

【问题讨论】:

标签: arrays json r list nested


【解决方案1】:

我用test_json =readLines("test.json") 阅读了整个文档 它已经为我读取了所有用户记录

我使用 test_list = lapply(test_all,fromJSON) 转换了 R 基础中的每个 json 记录

【讨论】:

    猜你喜欢
    • 2021-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-08
    • 1970-01-01
    • 1970-01-01
    • 2021-03-16
    • 1970-01-01
    相关资源
    最近更新 更多