我有以下JSON对象:
{"42030636":{"String1":"dixit dominus","String2":"la resurrezione","String3":"water music"}}
我使用fromJSON()(Jsonlite)摄取它。我得到了以下嵌套列表(让我们称之为列表):
$`42030636`$String1
[1] "dixit dominus"
$String2
[1] "la resurrezione"
$String3
[1] "water music"
我试图创建一个如下所示的数据框:
item_id String1 String2 String3
42030636 dixit dominus la resurrezione water music
我知道我能够在for循环中使用它来获取String1:3中的元素:
for (i in 1:4) {print(list[1][[1]][1:4]}
问题在于我无法获得``之间的数字。它似乎位于JSON块的顶层,但它不能被切割成#34;。
当我尝试tidyjson包时,我甚至无法导入文件,它给了我一个空的1x1包。我认为原始JSON文件的结构已关闭。
答案 0 :(得分:0)
通过指定dplyr::bind_rows
可以使用.id
来完成此操作。
json_data <- jsonlite::fromJSON('{"42030636":{"String1":"dixit dominus","String2":"la resurrezione","String3":"water music"}}')
dplyr::bind_rows(json_data, .id = 'item_id')
#> # A tibble: 1 x 4
#> item_id String1 String2 String3
#> <chr> <chr> <chr> <chr>
#> 1 42030636 dixit dominus la resurrezione water music
答案 1 :(得分:0)
在基础r中你会做类似的事情:
aggregate(.~ind,stack(json_data),I)
ind values.1 values.2 values.3
1 42030636 dixit dominus la resurrezione water music