首页 > 解决方案 > 在 R 中读取 CSV 文件时移动列的问题

问题描述

我正在尝试使用 data.table::fread 模块读取大型 csv 文件。

data.table::fread("/data.csv")

但是,这会返回以下错误:

在第 490763 行提前停止。预期有 21 个字段,但找到了 11 个。

在做了一些研究之后,我发现这个特定的错误也在 Sublime 中上升,其中一行被分成两行。我怀疑字符串 (\n) 中可能有换行符。例如,字符串可能如下所示:

"This may rise a problem \n and splits the string to a new line" 将导致:

"This may rise a problem
and splits the string to a new line"

例如,使用 R 中的 readLines 模块,我还看到在字符串中创建了一个新行。显然,这弄乱了我的行/列的顺序,并且没有正确读取行。对于相同的数据集,Excel 中也会出现同样的问题。

我尝试在我的 fread 语句中使用 SED 命令解决此问题,例如将引号之间的 \n 替换为其他内容(例如空格)。不幸的是,由于缺乏在 fread 语句中使用 SED 命令的知识,我无法解决这个问题。

您有什么想法可以解决此问题并正确读取所有行吗?我愿意使用任何其他 R 包来读取 CSV。但是,我尝试构建一个可以在 R 脚本中运行的解决方案,所以不是首先使用终端命令。先感谢您。我正在使用 Mac。

标签: rcsvdata.table

解决方案


fread在 Github 上查看类似问题的讨论可能会有所帮助: https ://github.com/Rdatatable/data.table/issues/1812

我会首先尝试该fill = TRUE选项。如果这对上述讨论中的最后一个答案没有帮助,可能会指导您找到解决方案。


推荐阅读