如何在R中批量处理JSON文件并合并提取数据至DataFrame?
批量处理JSON文件并合并为单一DataFrame
步骤1:加载所需包
先确保安装并加载必要的R包:
# 未安装则先执行安装 install.packages(c("jsonlite", "tidyr", "dplyr", "janitor", "purrr")) # 加载包 library(jsonlite) library(tidyr) library(dplyr) library(janitor) library(purrr)
步骤2:封装单文件处理函数
把你已有的单文件处理逻辑打包成函数,同时加入基础错误处理,避免单个文件异常中断整个流程:
process_single_json <- function(file_path) { tryCatch({ # 读取JSON文件 json_data <- fromJSON(file_path) # 沿用你的数据提取逻辑 df <- data.frame(str_split(json_data$data$summary$bullet, pattern = " - ")) %>% row_to_names(row_number = 1) # 可选:添加来源文件名列,方便后续溯源 df <- df %>% mutate(source_file = basename(file_path)) return(df) }, error = function(e) { message(paste("处理文件失败:", file_path, ",错误信息:", e$message)) return(NULL) }) }
步骤3:批量处理并合并结果
指定JSON文件所在文件夹,批量读取并处理所有文件,最终合并为一个有序DataFrame:
# 替换为你的JSON文件夹路径 json_folder <- "path/to/your/json/folder" # 获取文件夹内所有.json格式文件的完整路径 json_files <- list.files(path = json_folder, pattern = "\\.json$", full.names = TRUE) # 批量处理所有文件并按行合并结果 combined_df <- map_dfr(json_files, process_single_json) # 查看合并后的结果 head(combined_df)
关键说明
list.files的pattern = "\\.json$"确保只匹配后缀为.json的文件;full.names = TRUE返回完整文件路径,避免因路径问题找不到文件。map_dfr会自动将每个文件输出的小DataFrame按行合并,比手动循环追加更高效、代码更简洁。- 函数中新增的
source_file列可帮你追踪每条数据的原始文件来源,方便后续排查问题。 tryCatch块能隔离单个文件的处理错误,保证其他文件的处理不受影响。
内容的提问来源于stack exchange,提问作者george g
相关产品推荐
相关产品推荐

