해결 방법: do_one(nmeth)의 오류: 외부 함수 호출의 na/nan/inf(인수 1)


R에서 발생할 수 있는 오류는 다음과 같습니다.

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

이 오류는 R에서 k-평균 클러스터링을 수행하려고 시도했지만 사용 중인 데이터 프레임에 하나 이상의 누락된 값이 있을 때 발생합니다.

이 튜토리얼에서는 이 오류를 수정하는 방법을 정확하게 설명합니다.

오류를 재현하는 방법

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-평균 클러스터링을 수행하려고 하면 오류가 발생합니다.

 #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-평균 클러스터링 알고리즘이 성공적으로 실행됩니다.

보너스: R의 k-평균 클러스터링에 대한 완전한 단계별 가이드

추가 리소스

R에서 수정하는 방법: 강제로 인해 발생하는 NA
R에서 복구하는 방법: 범위를 벗어난 인덱스
R에서 수정하는 방법: 긴 물체의 길이가 더 짧은 물체 길이의 배수가 아닙니다.

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다