2010-06-29 2 views
2

В последнее время я работаю над большими наборами данных (более 400 тысяч строк). До сих пор я использовал формат XTS, который отлично работал для «небольших» наборов данных в несколько десятых тысяч элементов.Ограничение размера XTS

Теперь, когда проект растет, R просто сбрасывается при извлечении данных для базы данных и помещении в XTS.

Насколько я понимаю, R должен иметь векторы размером до 2^32-1 элементов (или 2^64-1 по версии). Следовательно, я пришел к выводу, что XTS может иметь некоторые ограничения, но я не мог найти ответ в документе. (возможно, я был немного самоуверен в своем понимании теоретического возможного размера вектора).

Подводя итог, я хотел бы знать, если:

  1. XTS действительно имеет ограничение на размере
  2. Что вы думаете это самый умный способ справиться с большим временным рядом? (Я думал о разделении анализа на несколько меньших наборов данных).
  3. Я не получаю сообщение об ошибке, R просто выключается автоматически. Это известное поведение?

РЕШЕНИЕ

  1. Так же, как R, и это зависит от вида используемой памяти (64bits, 32 бит). Это в любом случае чрезвычайно велико.
  2. Данные Chuncking действительно хорошая идея, но она не нужна.
  3. Эта проблема возникла из-за ошибки ошибка в R 2.11.0, которая была разрешена в R 2.11.1. Возникла проблема с вектором длинных дат (здесь индексы XTS).
+0

R 3.0.0 позволит векторам с> 2^32 - 1 элементами. Планируется, что он будет официально выпущен в апреле, но до тех пор попробуйте версию r-devel R. –

ответ

5

Что касается ваших двух вопросов, мой $ 0,02:

  1. Да, есть предел 2^32-1 элементов для векторов R. Это происходит из логики индексирования и, как сообщается, «достаточно глубоко» в R, что вряд ли скоро будет заменено (поскольку это повлияет на столь существующий код). Google - список r-devel для деталей; это было раньше. Пакет xts не налагает дополнительного ограничения.

  2. Да, разделение вещей на куски, которые управляемы, является самым умным подходом. Раньше я делал это на больших наборах данных, когда работал исключительно с 32-разрядными версиями R. Теперь я использую 64-разрядную R и больше не имею этой проблемы (и/или сохраняю свои данные).

Есть несколько подходов «вне памяти», но я сначала попытаюсь переосмыслить проблему и подтвердить, что вам действительно нужны все 400k строк сразу.

+0

Хорошо, что я применяю некоторые индикаторы в наборе данных. В основном я должен найти лучшие параметры для этих показателей. Поэтому расщепление куском не очень хорошо для меня, потому что это делает мой анализ «прерывистым». Возможно, я могу рассмотреть только фрейм и постоянно перемещать кадр данных. (например, 1 ... 10, 2 ... 11,3 ....12 и каждый раз запрашивать базу данных). – SRKX

+0

На самом деле я замечаю, что если я сделаю вычисление, и я не отображу результаты в консоли R, R не сработает. Это лишь проблематично при отображении данных. Хорошо знать. Любая идея, почему это так? – SRKX

+0

@JSMaga: может быть, что функция 'print' /' plot' не может обрабатывать столько строк. Вы все равно не можете читать, так что лучше всего сначала обобщить его и отобразить только то, что вам нужно. –

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