我正在尝试使用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
答案 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)。 无论如何,谢谢你的帮助!