Hola, Estoy tratando de crear un método S3 llamado "anthr" dentro del paquete que estoy desarrollando, cuyo argumento principal es "res" que básicamente es una lista con un solo componente. Pero si el segundo argumento llamado "oneSize" es FALSE, "res" es una lista de listas. Lo que he escrito hasta el momento es lo siguiente: anthr <- function(res, oneSize, nsizes){ UseMethod("anthr") } anthr.tri <- function(res, oneSize, nsizes){ if(oneSize){ cases <- c() cases <- res$meds }else{ cases <- list() for (i in 1 : (nsizes - 1)){ cases[[i]] <- res[[i]]$meds } } return(cases) } El problema cuando instalo el paquete y utilizo este método, es que R no me reconoce que "res" sea una lista. En concreto, me aparece este error: Error in UseMethod("anthr") : no applicable method for 'anthr' applied to an object of class "list" He tratado de añadir esto: tri <- function(x){ value <- list(meds = x$meds) attr(value, "class") <- "tri" value } pero sigue sin funcionarme. ¿Alguien puede ofrecerme alguna ayuda?. Muchas gracias de antemano. Un saludo, Guillermo
Hola, ¿qué tal? Sigue http://www.datanalytics.com/2011/08/04/desarrollo-de-paquetes-con-r-iv-funciones-genericas/ a rajatabla y lo tendrás. Un saludo, Carlos J. Gil Bellosta http://www.datanalytics.com P.D.: Si te fijas bien, no estás siguiendo esa guía "a rajatabla". El día 23 de julio de 2015, 16:26, <Guillermo.Vinue en uv.es> escribió:> Hola, > > Estoy tratando de crear un método S3 llamado "anthr" dentro del paquete > que estoy desarrollando, cuyo argumento principal es "res" que > básicamente es una lista con un solo componente. Pero si el segundo > argumento llamado "oneSize" es FALSE, "res" es una lista de listas. > > Lo que he escrito hasta el momento es lo siguiente: > > anthr <- function(res, oneSize, nsizes){ > UseMethod("anthr") > } > > anthr.tri <- function(res, oneSize, nsizes){ > > if(oneSize){ > cases <- c() > cases <- res$meds > }else{ > cases <- list() > for (i in 1 : (nsizes - 1)){ > cases[[i]] <- res[[i]]$meds > } > } > return(cases) > } > > El problema cuando instalo el paquete y utilizo este método, es que R no > me reconoce que "res" sea una lista. En concreto, me aparece este error: > > Error in UseMethod("anthr") : > no applicable method for 'anthr' applied to an object of class "list" > > He tratado de añadir esto: > > tri <- function(x){ > value <- list(meds = x$meds) > attr(value, "class") <- "tri" > value > } > > pero sigue sin funcionarme. ¿Alguien puede ofrecerme alguna ayuda?. > > Muchas gracias de antemano. > > Un saludo, > > Guillermo > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es
Hola Carlos, Muchas gracias por el enlace, me ha sido de gran ayuda. Ya he entendido cómo funciona el sistema S3. Un saludo, Guillermo> Hola, ¿qué tal? > > Siguehttp://www.datanalytics.com/2011/08/04/desarrollo-de-paquetes-con-r-iv-funciones-genericas/> a rajatabla y lo tendrás. > > Un saludo, > > Carlos J. Gil Bellosta > http://www.datanalytics.com > > P.D.: Si te fijas bien, no estás siguiendo esa guía "a rajatabla". > > El día 23 de julio de 2015, 16:26, <Guillermo.Vinue en uv.es> escribió: > > Hola, > > > > Estoy tratando de crear un método S3 llamado "anthr" dentro del paquete > > que estoy desarrollando, cuyo argumento principal es "res" que > > básicamente es una lista con un solo componente. Pero si el segundo > > argumento llamado "oneSize" es FALSE, "res" es una lista de listas. > > > > Lo que he escrito hasta el momento es lo siguiente: > > > > anthr <- function(res, oneSize, nsizes){ > > UseMethod("anthr") > > } > > > > anthr.tri <- function(res, oneSize, nsizes){ > > > > if(oneSize){ > > cases <- c() > > cases <- res$meds > > }else{ > > cases <- list() > > for (i in 1 : (nsizes - 1)){ > > cases[[i]] <- res[[i]]$meds > > } > > } > > return(cases) > > } > > > > El problema cuando instalo el paquete y utilizo este método, es que R no > > me reconoce que "res" sea una lista. En concreto, me aparece este error: > > > > Error in UseMethod("anthr") : > > no applicable method for 'anthr' applied to an object of class "list" > > > > He tratado de añadir esto: > > > > tri <- function(x){ > > value <- list(meds = x$meds) > > attr(value, "class") <- "tri" > > value > > } > > > > pero sigue sin funcionarme. ¿Alguien puede ofrecerme alguna ayuda? . > > > > Muchas gracias de antemano. > > > > Un saludo, > > > > Guillermo > > > > _______________________________________________ > > R-help-es mailing list > > R-help-es en r-project.org > > https://stat.ethz.ch/mailman/listinfo/r-help-es > >