Hola, ¿qué tal?
Si el objeto que creas en ND.fit es de la clase NDfit, entonces, tu
función coef tiene que llamarse coef.NDfit (y no coef.ND).
Un saludo,
Carlos J. Gil Bellosta
http://www.datanalytics.com
El dÃa 16 de abril de 2012 09:56, Antonio José Sáez Castillo
<ajsaez en ujaen.es> escribió:
Perdón por anticipado ante una pregunta sólo achacable a mi ignorancia en
programación.
Estoy creando un nuevo paquete con una estructura "decente", en vez
de las
chapuzas que hacÃa hasta ahora. Defino una función que ajusta unos
datos a
una distribución que podemos llamar ND. La sintaxis de esta función
serÃa,
de forma resumida:
ND.fit<-function(x, start, ...){
...
structure(list(estimate = res$par, sd = sds, vcov = vc, loglik =
-res$value,
method = method, convergence = res$convergence, n = n, obs = x,
obsName = xName), class = "NDfit")
}
Ahora quiero crear nuevos métodos asociados a la clase NDfit para las
funciones genéricas habituales. Por ejemplo:
coef.ND<-function (x, ...)
{
if (!class(x) == "NDfit") {
stop("Object must belong to class ND")
}
print.default(x$estimate, print.gap = 2, quote = FALSE)
invisible(x)
}
El problema es que al hacerlo asÃ, cuando hago
coef.ND(ajuste)
siendo "ajuste" un modelo ajustado clase NDfit, me sale bien, pero si
hago
coef(ajuste)
me devuelve NULL. Lo mismo me pasa con print.ND, en cuyo caso me
devuelve el
resultado de la función print.default, o con logLik, donde me devuelve
Error en UseMethod("logLik") :
no applicable method for 'logLik' applied to an object of class "NDfit"
He seguido las instrucciones que algunos de vosotros tenéis en vuestros
foros, blogs, etc. Por ejemplo, Carlos J. Gil Bellosta propone en
http://www.datanalytics.com/blog/2011/08/04/desarrollo-de-paquetes-con-r-iv-funciones-genericas/
el ejemplo que sà funciona siguiente:
plot.hola.hola<- function( x ) print( "caracola" )
a<- list()
class( a )<- "hola.hola"
plot( a )
Asà sà funcione, pero, ¿en qué se diferencia eso de lo que yo intento?
Gracias de antemano.
--
Dr. Antonio José Sáez Castillo
Dpto. de EstadÃstica e Investigación Operativa
Escuela Politécnica Superior de Linares
Universidad de Jaén
C/ Alfonso X El Sabio 28, 23700 Linares (Jaén) ESPAÑA
Tlf. y FAX +34 953 648578