Как отмечалось в разделе книги Advanced R , посвященном использованию памяти , числовые векторы занимают 8 байтов на элемент, целочисленные векторы занимают 4 байта на элемент, а сложные векторы занимают 16 байтов на элемент.element.
Следовательно, в зависимости от количества строк и столбцов во входном CSV-файле результирующий объект R может быть значительно больше, чем входной CSV-файл.
Исходя из объема доступной оперативной памяти на машине, используемой для обработки данных, пользователи R используют следующие стратегии для работы с ограниченной памятью, в том числе:
- выборка: анализслучайная выборка входных данных,
- подмножество: обработка данных в подмножествах, затем объединение результатов, и
- агрегирование: агрегирование данных в более высокие единицы анализа, а затем их анализ.
Поскольку R загружает все объекты в память для их обработки, необходимо иметь не только достаточно ОЗУ для загрузки объекта, но также достаточно ОЗУ для обработки объекта, включая запись дополнительных выходных объектов.
Обратите внимание, что форматы хранения, такие как data.table
и tibble
, более эффективны, чем Base R data.frame
, и могут сэкономить до 50% использования оперативной памяти, как я иллюстрирую в AmericanПример опроса сообщества .