r - 在 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。
解决方案
fread
在 Github
上查看类似问题的讨论可能会有所帮助: https ://github.com/Rdatatable/data.table/issues/1812
我会首先尝试该fill = TRUE
选项。如果这对上述讨论中的最后一个答案没有帮助,可能会指导您找到解决方案。
推荐阅读
- java - 同时遍历两个数组
- node.js - 使用 pem 证书向远程代理发送消息
- javascript - 为什么 Ruby 包含?AngularJS变量的功能无法按预期工作?
- r - 如何提取矩阵中的重复行
- node.js - 带有参数 {new:true} 的 Mongoose updateOne 未显示实际更新值
- docker - 将主机符号链接挂载到容器时,是否可以不取消引用它?
- ios - 使场景在其他选项卡中可用 - React Native Router Flux
- xml - 使用 XSLT 更改 XML 的根标记、名称空间和模式位置
- sql - AgreementHeader 表和 PurchTable 的关系
- macos - Chartjs 动画 x 轴在 mac 设备中错误地显示数据