2015-03-18 2 views
-1

В настоящее время я запускаю скрипт, который читает около 8500 файлов csv (8.3mb каждый) и добавляет столбец из csv, если выполняются определенные условия. Файлы csv содержат только числа, за исключением заголовков и пробелов.Чтение и запись больших csv matlab vs. r

My R script использует fread, а затем преобразует таблицы данных в матрицы, прежде чем использовать write.table для повышения скорости. Запуск скрипта для 2160 файлов (около 17 ГБ) привел к 3,8 ГБ csv-файлу и занял около 3,2 часа. Fread для каждого файла занимает от 3-4 секунд.

Я рассматриваю возможность написания сценария matlab, поскольку я заметил, что Matlab также имеет формат fread и сохраняет формат мата, что позволяет сэкономить время. Может ли использование matlab значительно сократить время чтения и записи на csv?

+1

Попробуйте на подмножества данных и видеть, что все из нас будет делать. – excaza

+0

Проверьте свой баран, а затем попробуйте несколько раз в r – Pau

ответ

3

Matlab's fread полностью не связан с R. R является расширенной функцией чтения данных, способной обрабатывать структурированные данные, такие как csv, Matlab - это низкоуровневое двоичное чтение файлов, которое не предназначено для обработки текстовых данных вообще, не говоря уже о структурированных текстовых данных.

К сожалению, функции перемещения Matlab csv ограничены. Если вы находитесь в Windows и у вас установлен Microsoft Office, он может использовать Excel для обработки сложных файлов csv (хотя вы можете столкнуться с ограничениями относительно количества строк или столбцов, которые он поддерживает). Если нет, то ни одна из функций Matlab, которые должны обрабатывать файлы csv, на самом деле не может обрабатывать все файлы, совместимые со стандартами csv, что означает, что у вас есть возможность написать собственный парсер csv, если у ваших данных есть такие вещи, числовые данные, отсутствующие данные, комментарии, цитаты и т.д.

Вы можете найти более подробную информацию о проблеме в этой статье: MATLAB can’t read plain text data out of a wet paper bag.

+0

Ссылка, которую вы указали ... название заставило меня смеяться над моим @ $$. +1 для надежных внутренних знаний. – rayryeng

+0

Как использовать компиляторы на основе mex для чтения csv на matlab сравнить с fread на r? – rokman54

+0

mex-файлы - это в основном только файлы C, C++ или Fortran. Если вы собираетесь писать собственный '' csv' -серсер в C/C++ или Fortran, то, вероятно, не имеет большого значения, используете ли вы R или MATLAB (возможно, вы даже можете включить интерфейсы для обоих). – TheBlackCat

Смежные вопросы