do_one(nmeth) 中的错误:外部函数调用中的 NA/NaN/Inf (arg 1)
Posted
技术标签:
【中文标题】do_one(nmeth) 中的错误:外部函数调用中的 NA/NaN/Inf (arg 1)【英文标题】:Error in do_one(nmeth) : NA/NaN/Inf in foreign function call (arg 1) 【发布时间】:2016-07-27 22:48:50 【问题描述】:我有一个包含数字的数据表(“规范”) - 至少在我所见的范围内 - 以下形式的标准化值:
当我执行时
k <- kmeans(norm,center=3)
我收到以下错误:
Error in do_one(nmeth) : NA/NaN/Inf in foreign function call (arg 1)
你能帮帮我吗?谢谢!
【问题讨论】:
你检查过你的数据中是否有NaN/NA/Inf
吗?您可以使用is.na()
和is.finite()
函数进行检查
是的,我的文件表中有很多NAs
,但我认为这应该不是问题?! is.finite()
返回很多 TRUEs
,但也有一些 FALSEs
。我该如何解决这个问题?
您必须从数据中删除 NA/Inf/NaN
值。有关详细信息,请参阅“缺失值插补”方法。一种简单的方法是用行/列平均值替换它们。
@UjjwalKumar 谢谢!
【参考方案1】:
kmeans 无法处理具有 NA 值的数据。
然后,均值和方差不再明确定义,您不再知道哪个中心最近。
【讨论】:
Kmeans 无法处理具有 NA、INF 和 CONTANTS 的数据。【参考方案2】:do_one(nmeth) 中的错误:外部函数调用中的 NA/NaN/Inf (arg 1)
由于表中存在非数值,也会发生此错误。
【讨论】:
【参考方案3】:所有遇到“do_one(nmeth) 中的错误:外部函数调用中的 NA/NaN/Inf (arg 1)”问题的所有人 而不是
results <- kmeans(iris.features,3)
results
写下以下内容,请注意 iris 中的大小写你在开始时使用的任何内容
results <- kmeans(na.omit(irisa.features),3) # this helps in omitting NA
results
【讨论】:
【参考方案4】:关于错误说明:
do_one(nmeth) 中的错误:外部函数调用中的 NA/NaN/Inf (arg 1)
您在上面发布的数据集包含缩放条目,原因一定是您的数据集中有 NA 值,因此通过以下代码省略它们。
km_cluster <- kmeans(na.omit(MyData), 3)
km_cluster
km_cluster$withinss
km_cluster$tot.withinss/km_cluster$betweenss
【讨论】:
以上是关于do_one(nmeth) 中的错误:外部函数调用中的 NA/NaN/Inf (arg 1)的主要内容,如果未能解决你的问题,请参考以下文章