我在向量中有数字数据,我正在尝试运行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都没有错误。所以看起来它确实与数据的大小有关,而与格式/类型无关。如果是这样的话,我该怎么做才能处理它? 再次感谢。
答案 0 :(得分:2)
尝试使用以前版本的R,例如2.15.3。这对我有用。
在撰写本文时,我遇到了类似的问题,v3.1.2并重新创建了NA强制问题。
我在这里创建了一个类似的线程: kmeans on 46 million elements coerces NA values
答案 1 :(得分:2)
当我修复另一个错误时,这是由我(由我)引入到R 3.0.1中的错误。 http://bugs.r-project.org/bugzilla/show_bug.cgi?id=15364#c6 包含原始错误报告和GökcenEraslan关于此问题的报告。
该错误已于10分钟前在R 3.2.0 alpha中修复(大约两周后显示为R 3.2.0)。但请注意,您的nrow(x)
已经在最大32位整数(2 ^ 31 - 1)的&lt; = 50之内,这是默认{{1}的行数的严格上限R中的算法,因为它目前使用的标准Fortran不允许更大的矩阵尺寸。
答案 2 :(得分:1)
我有同样的错误,当我读错误日志时,它说的是NaN,这意味着不是数字。所以我仔细检查我的数据集,是的,有一行包含一个字符串(单词)。我删除了那个字符串,它完美无缺。