【问题标题】:R kmeans NAs in foreign function call (arg 13) errorR kmeans 外函数调用中的 NA (arg 13) 错误
【发布时间】: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 的两次调用均未出现错误。所以它看起来确实与数据的大小有关,而不是格式/类型。如果是这种情况,我应该怎么做才能处理它? 再次感谢。

【问题讨论】:

标签: r


【解决方案1】:

尝试使用以前版本的 R,例如 2.15.3。这对我有用。

在撰写本文时,我在使用最新版本 v3.1.2 时遇到了类似的问题,它重新创建了 NA 强制问题。

我在这里创建了一个类似的线程: kmeans on 46 million elements coerces NA values

【讨论】:

  • 谢谢。我得找个时间试试,然后在这里跟进。
【解决方案2】:

当我修复另一个错误时,这是​​(由我)引入 R 3.0.1 的错误。 http://bugs.r-project.org/bugzilla/show_bug.cgi?id=15364#c6 包含有关此问题的原始错误报告和 Gökcen Eraslan 的报告。

该错误已在 10 分钟前在 R 3.2.0 alpha 中修复(大约两周后将显示为 R 3.2.0)。但是请注意,您的 nrow(x) 已经在最大 32 位整数 (2^31 - 1) 的 kmeans() 算法的行数的严格上限,因为它目前使用的是标准 Fortran,它不允许更大的矩阵维度。

【讨论】:

    【解决方案3】:

    我有同样的错误,当我阅读错误日志时,它显示 NaN,这意味着不是数字。所以我仔细检查了我的数据集,是的,有一行包含一个字符串(单词)。我删除了那个字符串,它工作得很好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-05
      • 1970-01-01
      • 1970-01-01
      • 2016-07-27
      • 2019-05-02
      • 2016-07-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多