Re: [Rd] Defining a method in two packages

From: Kevin Wright <kw.stat_at_gmail.com>
Date: Fri, 05 Mar 2010 13:52:20 -0600

Sorry for one more email, but here is a more concise and pertinent "ranef" example:

# Allow S4 methods to find S3 asreml objects setOldClass("asreml")

if(!isGeneric("ranef")){
  setGeneric("ranef", function(object, ...) standardGeneric("ranef")) }

ranef.asreml <- function(obj){
  effects <- obj$coefficients$random
  class(effects) <- c("ranef.asreml",class(effects))   return(effects)
}

print.ranef.asreml <- function(x, ...){
  print.default(x)
}

Kevin

On Fri, Mar 5, 2010 at 10:47 AM, Terry Therneau <therneau_at_mayo.edu> wrote:

> The coxme package has a ranef() method, as does lme4. I'm having
> trouble getting them to play together, as shown below. (The particular
> model in the example isn't defensible, but uses a standard data set.)
>
> The problem is that most of the time only one of lme4 or coxme will be
> loaded, so each needs to define the basic ranef function as well as a
> method for it. But when loaded together the last one wins. The coxme
> object is an S3 class BTW. (Suggestions to convert it to S4 will not be
> well recieved -- but that's a different and unnecessary thread.)
>
> Odds are that this has a simple solution which I have missed.
> Terry Therneau
>
>
> tmt935% R --vanilla
>
> R version 2.10.0 (2009-10-26)
> Copyright (C) 2009 The R Foundation for Statistical Computing
> ISBN 3-900051-07-0
>
> R is free software and comes with ABSOLUTELY NO WARRANTY.
> You are welcome to redistribute it under certain conditions.
> Type 'license()' or 'licence()' for distribution details.
>
> Natural language support but running in an English locale
>
> R is a collaborative project with many contributors.
> Type 'contributors()' for more information and
> 'citation()' on how to cite R or R packages in publications.
>
> Type 'demo()' for some demos, 'help()' for on-line help, or
> 'help.start()' for an HTML browser interface to help.
> Type 'q()' to quit R.
>
> > library(coxme)
> Loading required package: survival
> Loading required package: splines
> Loading required package: bdsmatrix
>
> > fit <- coxme(Surv(time, status) ~ age + (1|ph.ecog), lung)
> > ranef(fit)
> $ph.ecog
> Intercept
> 0.1592346
>
> > library(lme4)
> Loading required package: Matrix
> Loading required package: lattice
>
> Attaching package: 'lme4'
>
>
> The following object(s) are masked from package:coxme :
>
> fixef,
> ranef
>
> > ranef(fit)
> Error in function (classes, fdef, mtable) :
> unable to find an inherited method for function "ranef", for signature
> "coxme"
> > q()
>
> ______________________________________________
> R-devel_at_r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>

-- 
Kevin Wright

	[[alternative HTML version deleted]]

______________________________________________
R-devel_at_r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
Received on Fri 05 Mar 2010 - 19:56:21 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Fri 05 Mar 2010 - 21:10:59 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-devel. Please read the posting guide before posting to the list.

list of date sections of archive