事情是这样的
我有一个列表需要转换成数据框,列表是通过某个API返回的,大概长这个样子:
list <- rlist::list.load(
'{
"119087972": [
{
"name": "stage",
"value": "stage3",
"timestamp": 1574671029174
},
{
"name": "stage",
"value": "stage2",
"timestamp": 1574671020844
},
{
"name": "stage",
"value": "stage1",
"timestamp": 1574326025826
}
],
"120479202": [
{
"name": "stage",
"value": "stage3",
"timestamp": 1574761993152
},
{
"name": "stage",
"value": "stage1",
"timestamp": 1574761984068
}
]
}'
)
我期望实现的效果是这样:
# A tibble: 5 x 4
name value timestamp id
<chr> <chr> <dbl> <chr>
1 stage stage3 1574671029174 119087972
2 stage stage2 1574671020844 119087972
3 stage stage1 1574326025826 119087972
4 stage stage3 1574761993152 120479202
5 stage stage1 1574761984068 120479202
我目前的尝试是这样的:
library(dplyr)
list %>%
purrr::flatten() %>%
purrr::map_df(tibble::as_tibble)
#> # A tibble: 5 x 3
#> name value timestamp
#> <chr> <chr> <dbl>
#> 1 stage stage3 1574671029174
#> 2 stage stage2 1574671020844
#> 3 stage stage1 1574326025826
#> 4 stage stage3 1574761993152
#> 5 stage stage1 1574761984068
很显然,这么搞列表属性的名称就没了,但是这个信息挺重要的,大家有什么好的建议吗?
谢谢!
<sup>Created on 2020-09-28 by the reprex package (v0.3.0)</sup>