【发布时间】:2015-12-14 18:18:32
【问题描述】:
我在向量中有数字数据,我正在尝试对其运行 kmeans。下面给出一个错误
> kmeans( mydata, centers = 2 ) # trying centers 2 to 20 but failing at 2
Error in do_one(nmeth) : NAs in foreign function call (arg 13)
In addition: Warning message:
In do_one(nmeth) : NAs introduced by coercion
> str(mydata)
num [1:44990687] 3.44e-06 3.44e-06 3.44e-06 3.44e-06 4.35e-05 ...
> is.numeric(mydata)
[1] TRUE
我的代码适用于小于这个数据集的数据集,所以我怀疑它可能与数据的大小有关。关于如何修复错误的任何想法?提前致谢。
更新: 我尝试了以下方法:
> x <- length(mydata)
> kmeans( mydata[1:(x/2)], centers = 2 )
> kmeans( mydata[(x/2):x], centers = 2 )
对 kmeans 的两次调用均未出现错误。所以它看起来确实与数据的大小有关,而不是格式/类型。如果是这种情况,我应该怎么做才能处理它? 再次感谢。
【问题讨论】:
-
如果 nrows(mydata) > 2^31,那么这是 R 3.0.2 中引入的错误。查看此处 (bugs.r-project.org/bugzilla/show_bug.cgi?id=15364#c6) 了解详情。现在您可以使用其他 k-means 算法,例如 Lloyd 或 MacQueen,这些都可以。
标签: r