【发布时间】:2016-04-26 03:12:42
【问题描述】:
我有许多不同大小的 csv 文件,但都有些大。使用read.csv 将它们读入 R 所花费的时间比我迄今为止耐心等待的时间要长(几个小时)。我设法用data.table 的fread 非常快(不到一分钟)读取了最大的文件(2.6 gb)。
当我尝试读取一半大小的文件时出现问题。我收到以下错误消息:
fread("C:/Users/Jesper/OneDrive/UdbudsVagten/BBR/CO11700T.csv"中的错误,:应为 21 列,但第 2557 行包含处理所有文本后的文本 科尔斯。这很可能是由于一个或多个字段具有 嵌入
sep=';'和/或(未转义)'\n'不平衡中的字符 未转义的引号。
fread无法处理这种模棱两可的情况和那些 行可能没有按预期读入。请阅读本节 引用 ?fread.
通过研究,我发现了将quote = "" 添加到代码中的建议,但这对我没有帮助。我试过使用 bigmemory 包,但是当我尝试时 R 崩溃了。我使用的是 64 位系统,内存为 8 GB。
我知道关于这个主题有很多线程,但我无法通过任何解决方案解决问题。我真的很想使用fread(鉴于我对更大文件的良好经验),而且似乎应该有某种方法可以让它工作 - 只是想不通。
【问题讨论】:
-
似乎是
CO11700T.csv内部的问题,而不是大小 -
嗨,你最好的办法是查看第 2557 行,可能使用 bash 或类似的,例如
head -2557 C011700.csv | tail -1并手动剪切或编辑 -
@StephenHenderson 给出了它看起来像 Windows 的路径,所以他们可能会遇到
head和tail的问题...(是的,安装 cygwin) -
@Spacedman 好点。我相信你可以安装 coreutils inc。
head和tail在 Windows 上:gnuwin32.sourceforge.net/packages/coreutils.htm 可能比 cygwin 更容易? -
前几天我遇到了类似的问题,并在 notepad++ 中修复了文件(但只有几百兆)。如果您不想安装 cygwin 等,也许这些编辑器之一会打开您的文件? stackoverflow.com/questions/159521/…
标签: r csv data.table fread bigdata