2013-06-27 6 views
3

Приложение My R считывает входные данные из больших файлов txt. он не читает весь файл за один выстрел. Пользователи определяют имя гена (3 или 4 за раз) и на основании ввода пользователя приложение переходит в соответствующую строку и считывает данные.Оптимизация чтения файлов в R

Формат файла: 32 000 строк (один ген в строке, первые два столбца содержат информацию о имени гена и т. Д.) 35 000 столбцов с числовыми данными (десятичные числа).

Я использовал read.table (имя файла, skip = 10 000) и т. Д., Чтобы перейти в правую строку, затем читать 35 000 столбцов данных. то я делаю это снова для второго гена, третьего гена (максимум до 4 генов) , а затем обрабатывает численные результаты.

Операции чтения файлов занимают около 1,5-2,0 минут. Я экспериментирую с , читая весь файл, а затем беру данные для желаемых генов.

Любой способ ускорить это? Я могу переписать данные гена в другом формате (одна обработка ), если это ускорит операции чтения в будущем.

+1

Попробуйте 'fread' из пакета данных.table. – Roland

+0

http://stackoverflow.com/questions/1727772/quickly-reading-very-large-tables-as-dataframes-in-r/15058684#15058684 – eddi

ответ

2

Вы можете использовать аргумент colClasses для read.table, чтобы ускорить процесс, если вы знаете точный формат ваших файлов. Для 2-х символов столбцов и 34,998 (?) Числовых столбцов, можно использовать бы

colClasses = c(rep("character",2), rep("numeric",34998)) 
2

Это было бы более эффективным, если вы использовали интерфейс базы данных. Есть несколько доступных через пакет RODBC, но особенно хорошо интегрированным с R вариантом будет пакет sqldf, который по умолчанию использует SQLite. Затем вы сможете использовать индексную емкость базы данных для поиска правильных строк и чтения всех столбцов за одну операцию.