2012-04-20 7 views
5

Estoy tratando de modificar la función stats::kmeans para devolver el número de iteraciones (see here). Cuando copio la fuente en mi propio archivo, modifico la función y la ejecuto, me sale un error sobre el objeto C_kmns faltante al intentar ejecutar la función do_one. Este objeto se pasa a una llamada .Fortran y no se está creando en ningún lugar en la función kmeans. ¿De dónde viene este objeto?no se puede encontrar el objeto C_kmns cuando se pasa a .Fortran()

El error que estoy recibiendo es

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

He aquí un fragmento de código de la llamada "ofender".

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

Respuesta

8

C_kmns es un objeto no exportado en el espacio de nombres de estadísticas. Puede resolver el problema diciendo a R dónde encontrarlo con estadísticas ::: C_kmns. en su ejemplo:

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

En general, cuando se produce un error objeto no encontrado, se puede ir en busca de ella con getAnywhere("C_kmns")

Cuestiones relacionadas