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)的主要内容,如果未能解决你的问题,请参考以下文章

线性模型函数 lm() 错误:外部函数调用中的 NA/NaN/Inf (arg 1)

外部函数调用:更换机器时出现错误1097

c++线程函数中如何调用该方法下的外部函数?

尝试从外部模态视图控制器调用视图控制器函数时出现致命错误

Go语言中关于包内函数供外部调用的问题

如何在组件外部访问React Context?