展开 Tiddle 中的 JSON 字段
tidyr 本身就提供了 unnest()
系列函数,可以用于展开嵌套的数据结构。配合 fromJSON()
使用就可以实现 JSON 字段的展开。
library(tidyverse)
library(jsonlite)
spread_all <- function(data, cols) {
data %>%
mutate(across(all_of(cols), function(x)
map(x, fromJSON))) %>%
unnest_wider(all_of(cols))
}
# 用法
df %>%
spread_all(c("x", "y"))
为了加速 JSON 的解析,我们可以引入 furrr
包来实现并发解析。
library(furrr)
# make future_map parallel
plan(multisession)
spread_all <- function(data, cols) {
data %>%
mutate(across(all_of(cols), function(x)
future_map(x, fromJSON))) %>%
unnest_wider(all_of(cols))
}