fread:找不到文件

时间:2014-10-10 14:57:22

标签: r data.table

我正在尝试使用fread包中的data.table来打开一个2.2G文件,但是仍然会遇到同样的错误(它适用于其他文件,这些文件的强度低于1G):

library(data.table)
data.table 1.9.4  For help type: ?data.table
*** NB: by=.EACHI is now explicit. See README to restore previous behaviour.

train  = data.table::fread('train.csv')

Error in data.table::fread("train.csv") : file not found: train.csv

当然,文件存在(read.csv()有效,但速度很慢)。 我在i686上运行Ubuntu 12.04 LTS。感谢任何帮助!

注意:我正在尝试阅读的文件是'train.gz',可在以下位置找到: https://www.kaggle.com/c/tradeshift-text-classification/data

这是一个2.2G的csv文件,相当标准。

编辑:当我使用verbose=TRUE时,它会说:

Input contains no \n. Taking this to be a filename to open

2 个答案:

答案 0 :(得分:3)

要在32位Linux系统上打开大型文件,需要为O_LARGEFILE函数提供open选项,fread不执行此操作。这是open调用实际上失败了,但它被错误地报告为“找不到文件”错误。

启用大文件支持的另一种方法是在安装软件包时将-D_FILE_OFFSET_BITS=64选项传递给编译器。卸载并移除data.table,将以下内容放入~/.R/Makevars

CFLAGS=-D_FILE_OFFSET_BITS=64

然后发出R CMD INSTALL /path/to/data.table_X.Y.Z.tar.gz。新安装的软件包将在32位系统上成功打开大文件。

答案 1 :(得分:2)

好吧只是关闭主题:我将我的Ubuntu升级到x86-64,现在fread工作正常。

只是帮助开发人员的摘要:

1 - 下载了一个巨大的文件(在这种情况下为2.2G)

2 - 尝试使用fread阅读,并收到错误:file not found: train.csv

我使用的是Ubuntu 12.04 LTS x86和R last稳定版。

正如所指出的,在这种情况下工作的小文件(~731 MB)。 无论如何,谢谢你的帮助!