如何解决R中data.table::fread导入含内部逗号的CSV失败问题
解决方案
方案1:显式指定引号参数
data.table::fread默认已经支持自动忽略引号包裹内容内的分隔符,导入失败通常是版本过低或参数被错误覆盖,直接显式指定引号参数即可解决绝大多数情况:
library(data.table) dt <- fread("你的文件路径.csv", quote = "\"")
该方案不会额外损失读取性能,完全适配GB级大型csv文件
方案2:强制指定列结构适配格式异常文件
如果你的csv存在部分行引号不匹配、格式不规范的问题,可以强制指定列名和列数,避免误拆分:
dt <- fread("你的文件路径.csv", sep = ",", quote = "\"", col.names = c("key", "time", "abs-time", "value"), skip = 1) # 若原表头格式无问题可删除该行参数
方案3:纯文本预处理(极端异常场景用)
如果上述方案都失效,可先读取文件为纯文本,替换掉日期字符串内部的逗号后再解析:
# 读取全量文本 text_content <- readLines("你的文件路径.csv") # 替换双引号内部的逗号,不影响字段分隔 text_content <- gsub('(".*?),(.*?")', '\\1\\2', text_content) # 传入文本对象给fread解析 dt <- fread(text = text_content, sep = ",")
日期列导入后可通过lubridate::mdy_hms(dt$abs-time)一键转换为POSIXct时间格式,无需手动处理字符串。
内容的提问来源于stack exchange,提问作者user73522
相关产品推荐
相关产品推荐

