Data.table: هل يجب أن تقوم rbindlist (...، fill = TRUE) بإرجاع NA_logical_ في أعمدة القائمة؟

تم إنشاؤها على ٢٥ يناير ٢٠٢٠  ·  6تعليقات  ·  مصدر: Rdatatable/data.table

من # 4196:

عند ملء عمود قائمة ، ينحرف rbindlist عن سلوك جميع أنواع الأعمدة الأخرى ، ويعيد عناصر NULL بدلاً من NA:

> A = data.table(c1=0, c2=list(1:3))
> B = data.table(c1=1)
> rbind(A,B,fill=TRUE)
      c1     c2
   <num> <list>
1:     0  1,2,3
2:     1   

متوقع:

> A = data.table(c1=0, c2=list(1:3))
> B = data.table(c1=1)
> rbind(A,B,fill=TRUE)
      c1     c2
   <num> <list>
1:     0  1,2,3
2:     1  NA   

هل يجب علينا تغيير هذا السلوك لأعمدة القائمة لملء الصفوف بقيم NA لمطابقة سلوك التعبئة = TRUE لأنواع الأعمدة الأخرى؟

non-atomic column question

التعليق الأكثر فائدة

ماذا لو أضفنا بدلاً من ذلك جملة إلى الوثائق تشير إلى السلوك في حالة وجود عمود قائمة مفقود:

الإدخال الحالي لوسيطة التعبئة:

تملأ TRUE الأعمدة المفقودة بـ NAs. افتراضيا FALSE. عند TRUE ، يتم تعيين use.names على TRUE.

مقترح:

تملأ TRUE الأعمدة المفقودة بـ NAs أو NULL لأعمدة القائمة المفقودة. افتراضيا FALSE. عند TRUE ، يتم تعيين use.names على TRUE.

ال 6 كومينتر

العلاقات العامة مع الإصلاح المقدم إذا أردنا إجراء التغيير

يبدو السلوك الحالي جيدًا بالنسبة لي.

> str(as.integer(NULL)[1L])
 int NA
> str(as.list(NULL)[1L])
List of 1
 $ : NULL

لا ينبغي أن تكون IMO NA للأسباب التالية:

  • يغير النوع من حقل مفقود (غير محدد) إلى متجه منطقي
  • يغير الطول من 0 إلى الطول 1

أنا أميل نحو نقطة جان. السلوك الحالي للعنصر الفارغ هو في الواقع طريقة قائمة لتمثيل المفقودين (لا يوجد أي كائن للإشارة إليه). يمكننا إنشاء مثال حيث كان كل عنصر في القائمة متجهًا منطقيًا ، كل عنصر يكون نتيجة بعض الحسابات. في مثل هذه الحالة ، قد يلزم تمثيل 3 حالات مختلفة: الطول 0 المنطقي ، والطول 1 المنطقي ، والحساب المفقود. إذا تم استخدام الطول المنطقي 1 NA للمفقودين ، فلا يمكن تمييز هذين 2.

هل يكفي تغيير طريقة الطباعة؟ بدلاً من عدم طباعة أي شيء ، ماذا عن NULL ؟ قد تشير طباعة NA مرة أخرى إلى أن الطول 1 NA منطقي ، في حين أن NULL سيكون واضحًا ، بما يتوافق مع القاعدة R التي تطبعها لعناصر القائمة الفارغة ، وستعطي تذكيرًا مرئيًا إضافيًا بأنها كانت قائمة عمودي.

نوافق أيضًا على w Jan ، ولا سيما حول الطول 0 -> الطول 1.

أنا أستخدم الأطوال (x)> 0 كثيرًا لتصفية الصفوف حسب أعمدة القائمة الفارغة.

يمكننا تخمين وضع منطقية () هناك بدلاً من ذلك ، هل هناك أي ميزة منطقية () على NULL بالرغم من ذلك؟

ماذا لو أضفنا بدلاً من ذلك جملة إلى الوثائق تشير إلى السلوك في حالة وجود عمود قائمة مفقود:

الإدخال الحالي لوسيطة التعبئة:

تملأ TRUE الأعمدة المفقودة بـ NAs. افتراضيا FALSE. عند TRUE ، يتم تعيين use.names على TRUE.

مقترح:

تملأ TRUE الأعمدة المفقودة بـ NAs أو NULL لأعمدة القائمة المفقودة. افتراضيا FALSE. عند TRUE ، يتم تعيين use.names على TRUE.

يبدو تغيير المستند جيدًا. بالإضافة إلى تغيير طريقة الطباعة الذي اقترحته أيضًا؟

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات