You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用dplyr/tidyverse获取DataFrame中JSON数组的长度?

解决方案

你可以结合dplyr的管道语法和purrr的映射函数,批量解析每行的JSON字符串并提取数组长度,同时自动处理空数组"[]"的情况:

步骤1:加载依赖包

确保你已经安装并加载了必要的包:

library(dplyr)
library(jsonlite)
library(purrr)

步骤2:批量处理JSON列

假设你的JSON字符串列名为outcome(替换成你实际的列名),直接在管道中用map_int逐行处理:

data_analysis <- data %>%
  mutate(array_length = map_int(outcome, ~length(fromJSON(.x))))

代码说明

  • map_int会遍历outcome的每一个元素,对每个JSON字符串执行fromJSON(.x)解析,再用length()获取数组长度,最后返回一个整数列。
  • 空数组"[]"解析后是长度为0的向量,length()会返回0,完全符合需求。

带错误处理的版本(可选)

如果存在格式错误的JSON字符串,可使用possibly添加容错机制,避免解析失败导致整个流程中断:

# 定义安全的JSON解析函数,解析失败时返回空列表
safe_fromJSON <- possibly(fromJSON, otherwise = list())

data_analysis <- data %>%
  mutate(array_length = map_int(outcome, ~length(safe_fromJSON(.x))))

示例验证

用模拟数据测试效果:

# 模拟包含JSON数组列的DataFrame
data <- tibble(
  outcome = c(
    '["x", "y"]',
    "[]",
    '["a", "b", "c"]'
  )
)

# 执行处理
data_analysis <- data %>%
  mutate(array_length = map_int(outcome, ~length(fromJSON(.x))))

处理后的data_analysis会新增array_length列,值分别为2、0、3,与预期一致。

内容的提问来源于stack exchange,提问作者clog14

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 18:25:06