R读取多份WoS .bib文件并添加文件名列时遇报错求助
解决WoS多.bib文件读取合并及
seq.default错误问题 错误原因
这个seq.default错误是因为部分.bib文件无法被RefManageR::ReadBib正确解析,常见诱因包括:文件为空、格式损坏(比如缺失关键字段、语法错误)、包含特殊字符或不符合WoS标准导出格式。大量警告也说明多数文件在解析时存在格式兼容问题。
解决方案
方案一:带错误处理的ReadBib读取(保留BibEntry对象)
通过tryCatch捕获读取错误,跳过损坏文件,同时记录错误信息避免流程中断:
library(RefManageR) library(bibliometrix) # 获取所有.bib文件路径 files <- list.files( path = "C:/Users/drive/OneDrive/Documentos/cienciometria parques africanos", pattern = "\\.bib$", full.names = TRUE ) # 安全读取函数:捕获错误并跳过无效文件 read_bib_safe <- function(file) { tryCatch({ bib <- ReadBib(file) # 添加地点列(提取文件名并去掉.bib后缀) bib$location <- tools::file_path_sans_ext(basename(file)) return(bib) }, error = function(e) { # 打印错误信息方便排查 message(paste("读取失败:", file, "| 错误:", e$message)) return(NULL) }) } # 批量读取并过滤无效结果 bib_list <- lapply(files, read_bib_safe) bib_list <- Filter(Negate(is.null), bib_list) # 合并所有有效BibEntry对象 combined_bib <- do.call("c", bib_list)
方案二:使用bibliometrix原生函数(推荐,适配WoS格式)
bibliometrix::readFiles专门针对文献数据库导出文件优化,兼容性更强,返回的数据框格式更便于后续分析:
library(bibliometrix) # 获取所有.bib文件路径 files <- list.files( path = "C:/Users/drive/OneDrive/Documentos/cienciometria parques africanos", pattern = "\\.bib$", full.names = TRUE ) # 批量读取所有文件,返回列表(每个元素对应一个文件的数据框) bib_data_list <- readFiles(files) # 生成对应每个文件的地点名称(去掉.bib后缀) location_names <- tools::file_path_sans_ext(basename(files)) # 为每个文件的记录添加地点列 bib_data_list <- mapply(function(df, loc) { df$location <- loc return(df) }, bib_data_list, location_names, SIMPLIFY = FALSE) # 合并为单一数据框 combined_df <- do.call(rbind, bib_data_list)
额外排查建议
- 查看
message输出的错误文件,手动检查这些文件是否为空、格式错误(比如缺失@article等标签),必要时手动修复或重新导出WoS数据。 - 若文件数量多,可先随机选取几个文件测试读取,确认格式是否标准。
内容的提问来源于stack exchange,提问作者Karoline
相关产品推荐
相关产品推荐

