كيفية الإصلاح في r: خطأ فيsort.int(x, na.last,تنازلي,…): يجب أن يكون 'x' ذريًا
رسالة الخطأ التي قد تواجهها عند استخدام R هي:
Error in sort.int(x, na.last = na.last, decreasing = decreasing, ...): 'x' must be atomic
يحدث هذا الخطأ عند محاولة فرز قائمة.
افتراضيًا، R قادر فقط على فرز الكائنات الذرية مثل المتجهات. لذلك، لاستخدام الترتيب () مع القائمة، يجب عليك أولاً استخدام الدالة unlist () .
يوضح المثال التالي كيفية حل هذا الخطأ عمليًا.
كيفية إعادة إنتاج الخطأ
لنفترض أن لدينا القائمة التالية في R:
#create list
some_list <- list(c(4, 3, 7), 2, c(5, 12, 19))
#view list
some_list
[[1]]
[1] 4 3 7
[[2]]
[1] 2
[[3]]
[1] 5 12 19
#view class
class(some_list)
[1] "list"
لنفترض الآن أننا نحاول فرز القيم في القائمة:
#attempt to sort the values in the list
sort(some_list)
Error in sort.int(x, na.last = na.last, decreasing = decreasing, ...):
'x' must be atomic
لقد تلقينا خطأ لأن R غير قادر على فرز القوائم مباشرة.
كيفية تجنب الخطأ
لتجنب الخطأ، يجب عليك أولاً استخدام الدالة unlist() كما يلي:
#sort values in list
sort(unlist(some_list))
[1] 2 3 4 5 7 12 19
لاحظ أننا قادرون على فرز قائمة القيم بنجاح دون أي أخطاء لأننا استخدمنا unlist() لأول مرة، والذي حول القائمة إلى متجه رقمي.
افتراضيًا، يقوم R بفرز القيم بترتيب تصاعدي.
ومع ذلك، يمكننا استخدام التناقص = TRUE لفرز القيم بترتيب تنازلي:
#sort values in list in descending order
sort(unlist(some_list), decreasing= TRUE )
[1] 19 12 7 5 4 3 2
لاحظ أنه يتم الآن فرز القيم بترتيب تنازلي.
مصادر إضافية
تشرح البرامج التعليمية التالية كيفية إصلاح الأخطاء الشائعة الأخرى في R:
كيفية الإصلاح في R: تتضمن الوسائط عددًا مختلفًا من الأسطر
كيفية الإصلاح في R: خطأ في اختيار الوسائط غير المستخدمة
كيفية الإصلاح في R: الوسائط غير الصالحة
كيفية الإصلاح في R: الاستبدال له طول صفر