R语言data.table::fread导入CSV文件返回0行问题排查
问题根源
你在data.table::fread中设置的quote = ''参数和实际CSV文件的格式不匹配,是读取返回0行的直接原因:
你提供的CSV样本具备以下格式特征:
- 每条完整记录的外层被双引号包裹
- 字段内部的双引号通过连续两个双引号
""转义 - 论文标题、作者列表等长字段内部包含合法换行符
当你设置quote = ''时,相当于告知fread不识别任何引号包裹规则,会直接把长字段内部的换行识别为行结束符,解析出的分段全部不匹配表头列数,最终返回空结果。而read.csv默认使用quote = '"'参数,会将引号包裹的内容识别为单个字段,忽略内部换行,因此可以正常读取。
修复方案
删除quote = ''配置,或显式指定引号为双引号即可,修改后的代码如下:
df <- data.table::fread(file=path_data, header = TRUE, sep = ",", quote = '"', stringsAsFactors = FALSE)
如果仍存在个别异常行导致读取失败,可以补充以下参数适配:
- 新增
fill = TRUE:自动为列数不足的行补空值,避免直接读取失败 - 新增
verbose = TRUE:输出完整解析日志,定位异常行的具体问题
内容的提问来源于stack exchange,提问作者Jérémy
相关产品推荐
相关产品推荐

