Ну, пожалуй, самый верный способ исправить это - получить больше памяти. Тем не менее, это не всегда вариант. То, что вы можете сделать, зависит от вашей платформы. В Windows проверьте результаты memory.size()
и сравните это с доступной оперативной памятью. Если объем памяти меньше, чем ОЗУ, вы можете увеличить его. Это не вариант в Linux, так как по умолчанию он будет отображать всю вашу память.
Другая проблема, которая может усложнить ситуацию, связана с тем, используете ли вы 32-битную или 64-битную систему, поскольку 32-битные окна могут адресовать только определенный объем ОЗУ (2-4 ГБ) в зависимости от настроек . Это не проблема, если вы используете 64-битную Windows 7, которая может адресовать гораздо больше памяти.
Более практичным решением является удаление всех ненужных объектов из вашего рабочего пространства перед выполнением слияния. Вы должны запустить gc()
, чтобы увидеть, сколько памяти у вас есть и используется, а также удалить все объекты, на которые больше нет ссылок. Лично я, вероятно, запустил бы ваш ddply()
из сценария, затем сохранил бы полученный фрейм данных в виде файла CSV, закрыл вашу рабочую область и снова открыл ее, а затем снова выполнил слияние.
Наконец, худший возможный вариант (но который требует намного меньше памяти) - это создать новый фрейм данных и использовать команды поднабора в R, чтобы копировать столбцы, над которыми вы хотите, один за другим. Я действительно не рекомендую это, поскольку это утомительно и подвержено ошибкам, но мне приходилось делать это один раз, когда не было никакого способа завершить свой анализ в противном случае (вскоре я вложил деньги в новый компьютер с большим объемом оперативной памяти).
Надеюсь, это поможет.