gpt4 book ai didi

json - R:将具有空元素的嵌套列表转换为 data.frame(来自 json)

转载 作者:行者123 更新时间:2023-12-01 15:48:36 38 4
gpt4 key购买 nike

我已经导入了一个像这样的 json 文件:

library(rjson)
json_str <- '[{"id": 1, "code": 7909, "text": [{"col1": "a", "col2": "some text"}], "date": "2015-12-01"}, {"id": 2, "code": 7651, "text": [], "date": "2015-12-01"}, {"id": 3, "code": 4768, "text": [{"col1": "aaa", "col2": "Blah, blah"}, {"col1": "bbb", "col2": "Blah, blah, blah"}], "date": "2015-12-01"}]'
my.list <- fromJSON(json_str)
str(my.list)

不用说真正的文件要长得多。

结果我得到一个包含 3 个元素的嵌套列表,其中每个元素都是一个包含 4 个元素的列表,然后,元素 $text 是一个可变长度的列表,从无到任意数量的元素,就我而言,通常不超过 3 个。

经过一些研究,我找到了几个关于将 list 转换为 data.frame 的答案,例如 herehere .但是,当“$text”中的一个或多个嵌套列表为空时,它们都不起作用。

do.call(rbind, lapply(my.list, data.frame, stringsAsFactors=FALSE))

library(data.table)
rbindlist(my.list, fill=TRUE)

两者都返回错误。

我想将 $text 中的列表转换为 data.frame 的多列或只是一列(粘贴内容)。

另一种选择是能够跳过一些元素(例如 $text)并转换列表的其余部分,然后在单独的一行中转换这些元素(例如 $text) 到不同的 data.frame。我想我可以以某种方式将一个 data.frame 与另一个联系起来。

任何人都可以告诉我如何做到这一点。谢谢

最佳答案

听上去,像下面这样的东西应该可以工作:

do.call(rbind.data.frame, lapply(my.list, function(x) {
x[["text"]] <- toString(unlist(x[["text"]]))
x
}))
## id code text date
## 2 1 7909 a, some text 2015-12-01
## 21 2 7651 2015-12-01
## 3 3 4768 aaa, Blah, blah, bbb, Blah, blah, blah 2015-12-01

这遵循您将值粘贴在一起(此处使用 toString)以在 data.frame 中形成单个列的想法。

关于json - R:将具有空元素的嵌套列表转换为 data.frame(来自 json),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34312914/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com