Cara memperbaiki: kesalahan dalam do_one(nmeth): na/nan/inf dalam pemanggilan fungsi asing (arg 1)
Kesalahan yang mungkin Anda temui di R adalah:
Error in do_one(nmeth): NA/NaN/Inf in foreign function call (arg 1)
Kesalahan ini terjadi ketika Anda mencoba melakukan pengelompokan k-means di R tetapi bingkai data yang Anda gunakan memiliki satu atau lebih nilai yang hilang.
Tutorial ini menjelaskan dengan tepat cara memperbaiki kesalahan ini.
Bagaimana cara mereproduksi kesalahan tersebut
Misalkan kita memiliki bingkai data berikut di R dengan nilai yang hilang di baris kedua:
#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
Jika kita mencoba menggunakan fungsi kmeans() untuk melakukan pengelompokan k-means pada frame data ini, kita akan menerima kesalahan:
#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)
Bagaimana cara memperbaiki kesalahan tersebut
Cara termudah untuk memperbaiki kesalahan ini adalah dengan menggunakan fungsi na.omit() untuk menghapus baris dengan nilai yang hilang dari bingkai data:
#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"
Perhatikan bahwa algoritma pengelompokan k-means berjalan dengan sukses setelah kami menghapus baris dengan nilai yang hilang dari bingkai data.
Bonus: Panduan langkah demi langkah lengkap untuk pengelompokan k-means di R
Sumber daya tambahan
Cara memperbaikinya di R: NA yang diperkenalkan dengan paksaan
Cara memperbaiki di R: indeks di luar batas
Cara memperbaikinya di R: panjang benda yang lebih panjang bukan kelipatan panjang benda yang lebih pendek