求助:R语言读取无分隔符TXT文件并合并的问题
解决方案
你的文件格式是JSON键值对结构,不是传统的表格格式,所以read.table无法正确解析列名和内容;同时不完整行的警告也源于文件格式与读取方式不匹配。以下是针对性解决方法:
1. 依赖包准备
首先安装并加载jsonlite包(专门处理JSON格式数据):
install.packages("jsonlite") library(jsonlite)
2. 自定义读取函数
编写一个函数,完成「读取文件内容→修复不完整行→解析为单行数据框」的流程:
read_single_json_txt <- function(file_path) { # 读取文件所有内容,关闭不完整行警告 txt_content <- readLines(file_path, warn = FALSE) # 合并所有行(避免内容被拆分到多行的情况) full_content <- paste(txt_content, collapse = "") # 修复不完整的JSON结构:确保以}结尾,缺失则自动补充 if (!grepl("}$", full_content)) { full_content <- paste0(full_content, "}") } # 解析为单行数据框 fromJSON(full_content) }
3. 批量读取并合并
替换原代码的读取合并部分,用自定义函数批量处理:
setwd("C:/User/BOX") unzip("C:/User/BOX/data.zip") temp <- list.files(pattern = "*.txt") # 批量读取所有文件,合并为一个数据框 df <- do.call(rbind, lapply(temp, read_single_json_txt))
关键说明
- 跳过不完整行警告:通过
readLines的warn = FALSE参数直接屏蔽无关警告,同时用代码自动修复可能的JSON结构缺失。 - 适配JSON格式:你的文件本质是单个JSON对象,
fromJSON可以直接将其转换为1行数据框,完美匹配「每个文件1行115列」的需求。 - 自动修复结构:如果文件末尾缺失闭合的
},代码会自动补充,确保解析流程不中断。
内容的提问来源于stack exchange,提问作者Baptista
相关产品推荐
相关产品推荐

