【问题标题】:Reading large csv file in R在R中读取大型csv文件
【发布时间】: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


【解决方案1】:

通过安装SlickEdit 并使用它来编辑导致问题的行来解决这个问题。与符号、引号和撇号等一些字符一致地编码为包含分号 - 例如& 而不仅仅是 &。由于分号是文本文档中的分隔符,这导致使用fread 阅读时出现问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-04
    • 1970-01-01
    • 2013-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多