سؤال

لقد كنت أعمل على مجموعات بيانات كبيرة مؤخرًا (أكثر من 400 آلاف السطر). حتى الآن ، كنت أستخدم تنسيق XTS ، الذي عمل بشكل جيد لمجموعات البيانات "الصغيرة" التي تضم بضع عناصر من عناصر الآلاف.

الآن بعد أن ينمو المشروع ، يتعطل R ببساطة عند استرداد البيانات الخاصة بقاعدة البيانات ووضعها في XTS.

أفهم أن R يجب أن يكون قادرًا على وجود متجهات بحجم تصل إلى 2^32-1 (أو 2^64-1 وفقًا للنسخة). وبالتالي ، توصلت إلى استنتاج مفاده أن XTs قد يكون لها بعض القيود ، لكنني لم أتمكن من العثور على الإجابة في المستند. (ربما كنت واثقا بعض الشيء بشأن فهمي لحجم المتجه النظري المحتمل).

لتلخيص ، أود أن أعرف إذا:

  1. XTS لديها بالفعل قيود الحجم
  2. ما رأيك هو أذكى طريقة للتعامل مع سلسلة زمنية كبيرة؟ (كنت أفكر في تقسيم التحليل إلى عدة مجموعات بيانات أصغر).
  3. لا أحصل على رسالة خطأ ، يتم إيقاف تشغيل R تلقائيًا. هل هذا سلوك معروف؟

المحلول

  1. نفس R ويعتمد على نوع الذاكرة المستخدمة (64Bits ، 32 بت). إنه كبير على أي حال.
  2. تعتبر البيانات التي تشكلها في الواقع فكرة جيدة ، لكنها ليست ضرورية.
  3. جاءت هذه المشكلة من أ علة في R 2.11.0 التي تم حلها في R 2.11.1. كانت هناك مشكلة مع متجه التواريخ الطويلة (هنا فهارس XTS).
هل كانت مفيدة؟

المحلول

بخصوص سؤالك ، 0.02 دولار:

  1. نعم ، هناك حدود 2^32-1 عن عناصر R. يأتي هذا من منطق الفهرسة ، ويقال إنه يجلس "في أعماق" بدرجة كافية في R أنه من غير المرجح أن يتم استبداله قريبًا (لأنه سيؤثر على الكثير من التعليمات البرمجية الموجودة). Google قائمة R-Devel للحصول على التفاصيل ؛ وجاء ذلك من قبل. ال XTS الحزمة لا تفرض قيودًا إضافية.

  2. نعم ، تقسيم الأشياء إلى أجزاء يمكن التحكم فيها هو أذكى نهج. اعتدت أن أفعل ذلك على مجموعات البيانات الكبيرة عندما كنت أعمل حصريًا مع إصدارات 32 بت من R. أنا الآن أستخدم 64 بت R ولم يعد لدي هذه المشكلة (و/أو الحفاظ على مجموعات البيانات الخاصة بي) ،

هناك بعض الأساليب "خارج الذاكرة" ، لكنني أحاول أولاً إعادة التفكير في المشكلة وأؤكد أنك بحاجة حقًا إلى جميع الصفوف البالغة 400 كيلو في وقت واحد.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top