[R-es] Método S3 paquete

Guillermo.Vinue en uv.es Guillermo.Vinue en uv.es
Jue Jul 23 16:26:22 CEST 2015


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



Más información sobre la lista de distribución R-help-es