2017-01-10 40 views
0

时出现无效的下标“list”错误我按照以下问题中提到的说明将JSON数据转换为使用RJSONIO包的数据帧。链接如下:从JSON转换为Dataframe时使用R

How to convert JSON to Dataframe

下面是我的数据的JSON总之,每个字段包含相等数量的值,大约五。颜色字段中的值是类型列表,我的猜测是这是导致问题的原因。

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): 无效标类型 '列表'

谢谢。

回答

0

问题在于JSON格式错误,修复JSON数组基本上做到了这一点。