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

如何将JSON接口返回的多Data Frame列表合并为单一结构化Data Frame?

解决方案

你可以通过将每个子DataFrame转为宽格式后按行合并来实现需求,这里提供两种常用方案:

方案一:使用tidyverse工具(推荐)

先加载dplyr和tidyr包,然后对列表中的每个子DataFrame做宽格式转换,最后合并所有结果:

library(dplyr)
library(tidyr)

# 遍历列表,将每个子DataFrame转为宽表(Name作为列名,Value作为对应值)
wide_specs <- lapply(S, function(sub_df) {
  pivot_wider(sub_df, names_from = Name, values_from = Value)
})

# 合并所有宽表为单个DataFrame
final_df <- bind_rows(wide_specs)

方案二:Base R 实现

如果不想加载额外包,可以用Base R的方法完成:

# 遍历列表,转置Value列并设置列名为Name
wide_specs <- lapply(S, function(sub_df) {
  # 转置Value得到行数据,转为DataFrame
  row_data <- as.data.frame(t(sub_df$Value), stringsAsFactors = FALSE)
  # 设置列名
  colnames(row_data) <- sub_df$Name
  row_data
})

# 合并所有行数据
final_df <- do.call(rbind, wide_specs)

补充说明

  • 因为所有子DataFrame的Name列内容完全一致,所以转宽后的列名是统一的,直接合并不会出现列不匹配的问题。
  • 如果合并后的列类型不符合预期,可以用readr::type_convert(final_df)自动识别并转换列类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 12:33:21