كيفية التعامل مع r: الكائن من النوع "الإغلاق" غير قابل للتعريف بشكل فرعي


الخطأ الذي قد تواجهه في R هو:

 object of type 'closure' is not subsettable

يحدث هذا الخطأ عند محاولة تعيين دالة فرعية.

في لغة R، من الممكن إجراء مجموعة فرعية من القوائم والمتجهات والمصفوفات وإطارات البيانات، ولكن الدالة لها نوع “إغلاق” لا يمكن تعيينه فرعيًا.

يشرح هذا البرنامج التعليمي بالضبط كيفية حل هذا الخطأ.

كيفية إعادة إنتاج الخطأ

لنفترض أننا أنشأنا الدالة التالية في R التي تأخذ كل قيمة للمتجه وتضربها في 5:

 #define function
cool_function <- function (x) {
  x <- x*5
  return (x)
}

إليك كيف يمكننا استخدام هذه الوظيفة عمليًا:

 #define data
data <- c(2, 3, 3, 4, 5, 5, 6, 9)

#apply function to data
cool_function(data)

[1] 10 15 15 20 25 25 30 45

لاحظ أنه تم ضرب كل قيمة للمتجه الأصلي في 5.

لنفترض الآن أننا نحاول تعيين الوظيفة فرعيًا:

 #attempt to get first element of function
cool_function[1]

Error in cool_function[1]: object of type 'closure' is not subsettable

لقد تلقينا خطأ لأنه ليس من الممكن تعيين كائن من النوع “إغلاق” في R.

يمكننا استخدام الصيغة التالية للتحقق من أن الوظيفة هي بالفعل من النوع “الإغلاق”:

 #print object type of function
typeof(cool_function)

[1] “closure”

المزيد من الأمثلة على كائنات “الإغلاق”.

كل وظيفة في R هي من النوع “الإغلاق”. على سبيل المثال، قد نتلقى هذا الخطأ إذا حاولنا تعيين أي دالة فرعيًا في قاعدة R:

 #attempt to subset mean function
mean[1]

Error in mean[1]: object of type 'closure' is not subsettable

#attempt to subset standard deviation function
sd[1]

Error in sd[1]: object of type 'closure' is not subsettable

#attempt to subset table function
tabld[1]

Error in table[1]: object of type 'closure' is not subsettable

كيفية حل الخطأ

طريقة حل هذا الخطأ هي ببساطة تجنب التقليل من تعريف الوظيفة.

على سبيل المثال، إذا أردنا تطبيق وظيفة Cool_function السابقة فقط على العنصر الأول من المتجه، فيمكننا استخدام الصيغة التالية:

 #apply function to just first element in vector
cool_function(data[1])

[1] 10

لم نحصل على خطأ لأننا قمنا بتعيين المتجه فرعيًا بدلاً من الوظيفة.

أو يمكننا تطبيق الدالة Cool_function على المتجه بأكمله:

 #apply function to every element in vector
cool_function(data)

[1] 10 15 15 20 25 25 30 45

نحن لا نتلقى خطأ لأننا لم نحاول تعيين الوظيفة فرعيًا بأي شكل من الأشكال.

مصادر إضافية

تشرح البرامج التعليمية التالية كيفية حل الأخطاء الشائعة الأخرى في R:

كيفية الإصلاح: الشرط له طول > 1 وسيتم استخدام العنصر الأول فقط
كيفية الإصلاح في R: dim(X) يجب أن يكون له طول موجب
كيفية الإصلاح في R: القيمة المفقودة حيث تكون هناك حاجة إلى صواب/خطأ
كيفية الإصلاح: زمالة المدمنين المجهولين المقدمة عن طريق الإكراه

Add a Comment

ایمئیل یایینلانمایاجاق ایسته‎نیله‎ن بوشلوقلار خاللانمیشدیر *