【发布时间】:2023-03-19 15:04:01
【问题描述】:
我正在尝试将通过 API 检索并通过 jsonlite 转换为列表的对象转换为单行 tibble(即,列表中的每个项目都成为 tibble 中的变量)。
复杂之处在于,除了一组单独的值之外,嵌套在对象中的最后一项是对象数组,jsonlite 将其转换为两个列表的列表,每个列表包含两个项(我使用了 simpleDataFrame = FALSE)。
类似于实际 API 数据的简化结构在下面的表示中使用。
library(tidyverse)
dat <- list(
id = 1,
name = "Jo Bloggs",
offices = list(
list(office_id = 999, title = "Vice President"),
list(office_id = 998, title = "Director of Operations")
)
)
df <- dat %>% as_tibble()
df
#> # A tibble: 2 x 3
#> id name offices
#> <dbl> <chr> <list>
#> 1 1.00 Jo Bloggs <list [2]>
#> 2 1.00 Jo Bloggs <list [2]>
由reprex package (v0.2.0) 于 2018 年 2 月 26 日创建。
使用 as_tibble() 进行转换会生成一个包含所有非嵌套值的两行数据框,其中两个嵌套列表分别位于单独的一行。
我应该改变什么,而不是这个,我最终得到一行数据,最后一列包含一个嵌套的 2 x 2 数据框/小标题?提前致谢。
【问题讨论】:
-
我想您想先修改列表、办公室并创建一个 tibble 或数据框。
purrr::transpose(dat$offices) %>% lapply(unlist) %>% as_tibble会给你一个 2x2 的小标题。