5

我正在尝试修改stats::kmeans函数以返回迭代次数(请参见此处)。当我将源代码复制到我自己的文件中,修改函数并运行它时,我C_kmns在尝试执行do_one函数时收到关于对象丢失的错误。这个对象被传递给一个.Fortran调用,并且没有在kmeans函数的任何地方创建。这个物体是从哪里来的?

我得到的错误是

Error in do_one(nmeth) : object 'C_kmns' not found

这是“违规”调用的代码片段。

   do_one <- function(nmeth) {
      Z <-
               switch(nmeth,
                        { # 1
                           Z <- .Fortran(C_kmns, as.double(x), as.integer(m),
                                    as.integer(ncol(x)),
                                    ...
4

1 回答 1

8

C_kmns 是 stats 命名空间中的非导出对象。您可以通过使用 stats:::C_kmns 告诉 R 在哪里找到它来解决问题。在你的例子中:

Z <- .Fortran(stats:::C_kmns, as.double(x), as.integer(m),
                                    as.integer(ncol(x)),
                                    ...

一般来说,当你得到一个找不到对象的错误时,你可以去寻找它getAnywhere("C_kmns")

于 2012-04-20T21:45:46.833 回答