2014-10-10 2 views
3

Я пытаюсь открыть файл, используя 2.2g fread из data.table пакета, но сохраняющий получать ту же ошибку (она работает для других файлов, которые менее 1G жесткие):Fread: файл не найден

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() работает, но очень медленно). Я запускаю Ubuntu 12.04 LTS, на i686. Цените любую помощь!

ПРИМЕЧАНИЕ: Файл я, пытаясь прочитать это «train.gz», который можно найти по адресу: https://www.kaggle.com/c/tradeshift-text-classification/data.

Это файл csv 2.2G, довольно стандартный.

EDIT: Когда я использую verbose=TRUE, он говорит:

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

+0

Вы уверены, что у вас установлен правильный рабочий каталог и что 'list.files (pattern =" train.csv ")' возвращает информацию о файле? – MrFlick

+0

Это точно, 'read.csv' работает, думал, что это очень медленно. Кроме того, 'fread' работает с другими файлами в одном каталоге. – Fernando

+0

Какую версию data.table вы используете? Я не получаю такую ​​же ошибку для файлов, которые не существуют. – konvas

ответ

2

Ну просто, чтобы закрыть эту тему: я обновить Ubuntu до x86-64, теперь fread работает отлично.

Просто резюме, чтобы помочь разработчикам:

1-Скачивали огромный файл (2.2g в данном случае)

2-Попробуйте прочитать с fread, и получает ошибку: file not found: train.csv

Я использовал Ubuntu 12.04 LTS x86 и R последнюю стабильную версию.

Как указано, файлы меньшего размера, обработанные в этом сценарии (~ 731 МБ). Спасибо за помощь в любом случае!

+0

То же самое здесь, в Mageia Linux 5 32-бит (R 3.2.3, data.table 1.9.6). Файл представляет собой CSV 2.5G, и симптомы одинаковы. Попробуем 64-битную версию завтра и сообщаем результаты. – Dimitri

2

Чтобы открыть большие файлы в 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-битной системе.