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

如何创建函数处理TidyMultiqc读取JSON时的NaN解析报错?

自动修复JSON文件NaN并读取的函数实现

可以通过R的tryCatch错误捕获机制,实现遇到JSON解析错误时自动修复文件并重试读取的逻辑,具体实现如下:

完整函数代码

library(purrr)
library(TidyMultiqc)

load_multiqc_safe <- function(path) {
  # 定位目标JSON文件(避免匹配到非JSON的后缀文件)
  files <- dir(path, pattern = "\\.json$", full.names = TRUE)
  
  # 定义带错误处理的单文件读取逻辑
  read_single_file <- function(file) {
    tryCatch(
      expr = {
        load_multiqc(file)
      },
      error = function(e) {
        # 仅针对目标JSON解析错误执行修复
        if (grepl("lexical error: invalid char in json text", e$message) && grepl("NaN", e$message)) {
          # 用shQuote处理路径,避免含空格/特殊字符时命令出错
          system(paste("gsed -i 's/NaN/null/g'", shQuote(file)))
          # 修复后重新读取文件
          load_multiqc(file)
        } else {
          # 非目标错误,抛出原始错误信息
          stop(e)
        }
      }
    )
  }
  
  # 批量处理所有JSON文件
  files %>% map(read_single_file)
}

代码说明

  • 精准错误触发:通过匹配报错信息中的特征字符串,确保只在NaN导致的JSON解析失败时执行修复,避免误操作。
  • 路径安全处理:使用shQuote()包裹文件路径,解决路径含空格或特殊字符时的命令执行异常问题。
  • 批量容错处理:单个文件的错误不会中断整个批量读取流程,每个文件独立处理错误与修复。

使用方式

直接传入JSON文件所在的文件夹路径即可:

result <- load_multiqc_safe("path/to/your/json/folder")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 05:00:55