كيفية الإصلاح: خطأ في do_one(nmeth): na/nan/inf في استدعاء الوظيفة الخارجية (arg 1)


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

 Error in do_one(nmeth): NA/NaN/Inf in foreign function call (arg 1)

يحدث هذا الخطأ عند محاولة تنفيذ تجميع الوسائل k في R ولكن إطار البيانات الذي تستخدمه يحتوي على قيمة واحدة أو أكثر مفقودة.

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

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

لنفترض أن لدينا إطار البيانات التالي في R مع وجود قيمة مفقودة في الصف الثاني:

 #create data frame
df <- data. frame (var1=c(2, 4, 4, 6, 7, 8, 8, 9, 9, 12),
                 var2=c(12, 14, 14, 8, 8, 15, 16, 9, 9, 11),
                 var3=c(22, NA, 23, 24, 28, 23, 19, 16, 12, 15))

row. names (df) <- LETTERS[1:10]

#view data frame
df

  var1 var2 var3
At 2 12 22
B 4 14 NA
C 4 14 23
D 6 8 24
E 7 8 28
F 8 15 23
G 8 16 19
H 9 9 16
I 9 9 12
D 12 11 15

إذا حاولنا استخدام الدالة kmeans() لإجراء تجميعات k-means على إطار البيانات هذا، فسوف نتلقى خطأ:

 #attempt to perform k-means clustering with k = 3 clusters
km <- kmeans(df, centers = 3 )

Error in do_one(nmeth): NA/NaN/Inf in foreign function call (arg 1)

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

أسهل طريقة لإصلاح هذا الخطأ هي ببساطة استخدام الدالة na.omit() لإزالة الصفوف ذات القيم المفقودة من إطار البيانات:

 #remove rows with NA values
df <- na. omitted (df)

#perform k-means clustering with k = 3 clusters
km <- kmeans(df, centers = 3)

#view results
km

K-means clustering with 3 clusters of sizes 4, 3, 2

Cluster means:
  var1 var2 var3
1 5.5 14.250000 21.75000
2 10.0 9.666667 14.33333
3 6.5 8.000000 26.00000

Vector clustering:
ACDEFGHIJ
1 1 3 3 1 1 2 2 2 

Within cluster sum of squares by cluster:
[1] 46.50000 17.33333 8.50000
 (between_SS / total_SS = 79.5%)

Available components:

[1] "cluster" "centers" "totss" "withinss" "tot.withinss"
[6] "betweenss" "size" "iter" "ifault"

لاحظ أن خوارزمية التجميع k-means تعمل بنجاح بمجرد إزالة الصفوف ذات القيم المفقودة من إطار البيانات.

المكافأة: دليل كامل خطوة بخطوة لتجميع الوسائل k في R

مصادر إضافية

كيفية الإصلاح في R: NAs التي تم تقديمها عن طريق الإكراه
كيفية الإصلاح في R: الفهرس خارج الحدود
كيفية الإصلاح في R: طول الكائن الأطول ليس مضاعفًا لطول الكائن الأقصر

Add a Comment

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