2016-01-20 131 views
2

我有许多不同大小的csv文件,但都很大。使用read.csv将它们读入R花费的时间比我一直耐心等待的时间要长(几个小时)。我设法用data.tablefread以非常快的速度(不到一分钟)读取最大的文件(2.6 GB)。读取R中的大型csv文件

当我尝试读取一半大小的文件时,出现了我的问题。我收到以下错误信息:

错误fread("C:/Users/Jesper/OneDrive/UdbudsVagten/BBR/CO11700T.csv",:

期待21周的cols,但行2557包含了处理所有 的cols后的文本。这很可能是由于一个或多个字段在非平衡 未转义报价中嵌入了sep=';'和/或(未转义)'\n'字符。

fread无法处理这种模棱两可的情况,并且那些 行可能没有按预期读入。请阅读 上的引用部分? fread

通过研究,我发现了将代码quote = ""添加到代码中的建议,但它对我没有帮助。我试过使用bigmemory软件包,但是当我尝试时R会崩溃。我在一个带有8 GB内存的64位系统上。

我知道这个问题上有很多线索,但我还没有能够解决任何解决方案的问题。我真的很想使用fread(鉴于我对较大文件有良好的体验),似乎应该有一些方法可以使其工作 - 只是无法弄清楚。

+6

似乎是与'CO11700T.csv'里面有什么不一样大的问题 – mtoto

+3

您最好的选择是看看第2557行可能使用bash或类似的例如头部-2557 C011700.csv |尾巴-1'并剪切或手动编辑 –

+2

@StephenHenderson给出了它看起来像Windows的路径,所以他们可能会遇到'head'和'tail'的麻烦......(是的,安装cygwin) – Spacedman

回答

1

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