R语言中JSON的第一个元素

时间:2018-02-03 00:27:30

标签: json r jsonlite

我有以下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文件的结构已关闭。

2 个答案:

答案 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