我希望尽快地将CSV文件的单个列读入R中。我希望通过一种比标准方法更快的方式将该列读入RAM,以缩短所需时间的十倍。我的动机是什么呢?我有两个文件,一个名为Main.csv,有300000行和500列,另一个名为Second.csv,有300000行和5列。如果我使用system.time()命令 read.csv("Second.csv"),需要2.2秒。现在,如果我使用以下任何一种方法之一来读取Main.csv的第一列(因为它只有1列而不是5列,所以是Second.csv大小的20%),那么将需要超过40秒。这与读取整个600兆字节文件的时间相同,显然无法接受。
- 方法1
colClasses <- rep('NULL',500)
colClasses[1] <- NA
system.time(
read.csv("Main.csv",colClasses=colClasses)
) # 40+ seconds, unacceptable
方法二
read.table(pipe("cut -f1 Main.csv")) #40+ seconds, unacceptable
如何缩短这个时间?我希望有一个 R
解决方案。
Python
„ÄÅJava
ÂíåR
中进行io
的东西。 - user2763361data.frame
的方法,可以稍后仅读取少量变量。基本上,它是save/readRDS
的包装器,并将列写入单独的文件等。更多细节请参见:https://dev59.com/Dm445IYBdhLWcg3wpb8P - daroczigcolClasses
,但它只会读取整个 600Mb 的数据表(所有 500 列)? - user2763361scan(pipe("cut -f1 -d, Main.csv"))
可能会有帮助。 - Ben Bolker