【发布时间】:2013-08-14 23:45:23
【问题描述】:
我对 R 从大文件 (11GB+) 中读取特定行需要多长时间感到惊讶。例如:
> t0 = Sys.time()
> read.table('data.csv', skip=5000000, nrows=1, sep=',')
V1 V2 V3 V4 V5 V6 V7
1 19.062 56.71047 1 16 8 2006 56281
> print(Sys.time() - t0)
Time difference of 49.68314 secs
OSX 终端可以立即返回特定的行。有人知道 R 中更有效的方法吗?
【问题讨论】:
-
效率低下,因为
read.table调用readLines(file, skip)实际上解析行并读入R,然后将它们丢弃。为了提高效率,我认为您必须通过连接纠正一些seek()d 的 C 代码,直到您看到足够的换行符(并且您需要适当地使用缓冲以提高速度)
标签: r