【问题标题】:Invalid subscript "list" error when converting from JSON to Dataframe using R使用 R 从 JSON 转换为 Dataframe 时出现无效的下标“列表”错误
【发布时间】:2017-01-10 07:37:18
【问题描述】:

我按照以下问题中提到的说明使用 RJSONIO 包将 JSON 数据转换为数据帧。链接如下:

How to convert JSON to Dataframe

以下是我的数据的 JSON 汇总,每个字段包含相同数量的值,大约 50,000。 color 字段中的值是 list 类型的,我猜这是导致问题的原因。

json
title: chr
remaining: chr
color: list()
brand: chr
modelnum: chr
size: chr

我附上了一组 JSON 值的示例,如果社区中的任何人都可以阐明如何将其建模为数据框,那就太好了!

示例 JSON 数据:

{"title":"oneplus 3","remaining":"","color":[],"brand":"OnePlus","modelnum":"OnePlus 3","size":""}
{"title":"oneplus 3 (soft gold, 64 gb)","remaining":"(soft )","color":["gold"],"brand":"OnePlus","modelnum":"OnePlus 3","size":"64 gb"}
{"title":"deal 1:oneplus 3 (graphite, 64gb) 6gb ram 4g lte - 1 year manufacture warranty","remaining":"deal 1:  6gb ram 4g lte - 1 year manufacture warranty","color":["graphite"],"brand":"OnePlus","modelnum":"OnePlus 3","size":"64gb"}
{"title":"oneplus 3 (graphite, 64 gb)","remaining":"","color":["graphite"],"brand":"OnePlus","modelnum":"OnePlus 3","size":"64 gb"}
{"title":"xiaomi redmi note 3 32gb","remaining":"","color":[],"brand":"Xiaomi","modelnum":"Redmi Note 3","size":"32gb"}
{"title":"xiaomi redmi note 3 (grey 32 gb) mobile phone","remaining":"mobile phone","color":["grey"],"brand":"Xiaomi","modelnum":"Redmi Note 3","size":"32 gb"}
{"title":"xiaomi redmi note 3 new (6 month brand warranty)","remaining":"new (6 month brand warranty)","color":[],"brand":"Xiaomi","modelnum":"Redmi Note 3","size":""}
{"title":"xiaomi redmi note 3 (gold 32gb) mobile phone","remaining":"mobile phone","color":["gold"],"brand":"Xiaomi","modelnum":"Redmi Note 3","size":"32gb"}
{"title":"xiaomi redmi note 3 (dark grey) (32gb)","remaining":"","color":["dark grey"],"brand":"Xiaomi","modelnum":"Redmi Note 3","size":"32gb"}
{"title":"mi redmi note 3 32gb dark grey","remaining":"mi","color":["dark grey"],"brand":"Xiaomi","modelnum":"Redmi Note 3","size":"32gb"}
{"title":"xiaomi redmi note 3 (gold, 32gb)","remaining":"","color":["gold"],"brand":"Xiaomi","modelnum":"Redmi Note 3","size":"32gb"}

R代码:

library(RJSONIO)
json <- fromJSON(file_path_for_the_above_data, nullValue = NA)
dat <- lapply(json, function(j) {
as.data.frame(replace(j, sapply(j, is.list), NA))
})

这是发生错误的地方。

替换错误(j, sapply(j, is.list), NA): 无效的下标类型“列表”

谢谢。

【问题讨论】:

    标签: json r data-modeling


    【解决方案1】:

    问题在于 JSON 格式错误,修复 JSON 数组基本上就可以了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-18
      • 1970-01-01
      • 1970-01-01
      • 2018-10-24
      • 2017-10-05
      • 2015-11-01
      • 2020-11-10
      • 2016-07-29
      相关资源
      最近更新 更多