如何在R中读取存在错误换行的CSV文件
在R中修复CSV文件的系统性换行错误
问题背景
你的CSV文件存在系统性换行错误:frame字段的内容(如"A Frame")被拆分成两行,导致单条观测被拆成两行数据,需要合并这些拆分的行以还原完整观测。
解决步骤
1. 读取原始文件的所有行
用readLines()读取文件的全部文本内容,保留原始换行结构:
# 替换为你的文件路径 raw_lines <- readLines("your_data.csv")
2. 合并拆分的观测行
遍历所有行,累积内容直到凑够完整观测的字段数(根据表头,完整行包含6个逗号,对应7个字段):
fixed_lines <- character(0) current_line <- "" for (line in raw_lines) { # 统计当前行的逗号数量 comma_count <- length(gregexpr(",", line)[[1]]) current_line <- paste0(current_line, line) # 表头行或完整数据行(含6个逗号)则存入结果 if (grepl("^,\"id\"", current_line) || comma_count == 6) { fixed_lines <- c(fixed_lines, current_line) current_line <- "" } }
说明:表头行以
,\"id\"开头,单独判断;正常数据行包含6个逗号,对应7个字段,累积到这个条件时就完成一条观测的合并。
3. 读取修复后的内容为数据框
可以直接用textConnection读取处理后的行,无需写入临时文件:
df <- read.csv(textConnection(fixed_lines), header = TRUE, stringsAsFactors = FALSE)
验证结果
查看frame字段确认修复效果:
print(df$frame)
输出应为"A Frame"、"B Frame"这类完整内容。
内容的提问来源于stack exchange,提问作者canIchangethis
相关产品推荐
相关产品推荐

