更快地阅读单列CSV文件

我试图尽快阅读一列CSV文件到R.我希望能够将标准方法按照10分钟的时间缩短到RAM中.

我的动机是什么?我有两个文件一个称为Main.csv,它是300000行和500列,一个称为Second.csv,它是300000行和5列.如果我的system.time()命令read.csv(“Second.csv”),则需要2.2秒.现在,如果我使用下面两种方法之一来读取Main.csv的第一列(它是Second.csv的大小的20%,因为它是1列而不是5),它将需要40多秒.这是读取整个600兆字节文件所需的时间相当的时间 – 显然是不可接受的.

>方法1

colClasses <- rep('NULL',500)

colClasses[1] <- NA
system.time(
read.csv("Main.csv",colClasses=colClasses)
) # 40+ seconds, unacceptable

>方法2

 read.table(pipe("cut -f1 Main.csv")) #40+ seconds, unacceptable

怎么减少这个时间?我希望得到一个R解决方案.

最佳答案
我会建议

scan(pipe("cut -f1 -d, Main.csv"))

这与原始提案(read.table(pipe(“cut -f1 Main.csv”)))有所不同:几种不同的方式:

>由于文件是逗号分隔的,因此默认情况下剪切标签分隔,您需要指定d,以指定逗号分隔
对于简单/非结构化数据读取,scan()比read.table快得多.

根据OP的评论,这需要大约4次而不是40秒.

转载注明原文:更快地阅读单列CSV文件 - 代码日志