From Thierry.ONKELINX at inbo.be  Fri Mar 11 10:14:35 2011
From: Thierry.ONKELINX at inbo.be (ONKELINX, Thierry)
Date: Fri, 11 Mar 2011 09:14:35 +0000
Subject: [Rd] Problem with defining new method for residuals()
In-Reply-To: <4D79C2E0.5020703@fhcrc.org>
References: <AA818EAD2576BC488B4F623941DA74270336BD@inbomail.inbo.be>
	<4D79C2E0.5020703@fhcrc.org>
Message-ID: <AA818EAD2576BC488B4F623941DA7427033B29@inbomail.inbo.be>

Dear Martin,

Thank you very much for your solution. It works fine.

Best regards,

Thierry

----------------------------------------------------------------------------
ir. Thierry Onkelinx
Instituut voor natuur- en bosonderzoek
team Biometrie & Kwaliteitszorg
Gaverstraat 4
9500 Geraardsbergen
Belgium

Research Institute for Nature and Forest
team Biometrics & Quality Assurance
Gaverstraat 4
9500 Geraardsbergen
Belgium

tel. + 32 54/436 185
Thierry.Onkelinx at inbo.be
www.inbo.be

To call in the statistician after the experiment is done may be no more than asking him to perform a post-mortem examination: he may be able to say what the experiment died of.
~ Sir Ronald Aylmer Fisher

The plural of anecdote is not data.
~ Roger Brinner

The combination of some data and an aching desire for an answer does not ensure that a reasonable answer can be extracted from a given body of data.
~ John Tukey
  

> -----Oorspronkelijk bericht-----
> Van: Martin Morgan [mailto:mtmorgan at fhcrc.org] 
> Verzonden: vrijdag 11 maart 2011 7:36
> Aan: ONKELINX, Thierry
> CC: r-devel at r-project.org; John Chambers
> Onderwerp: Re: [Rd] Problem with defining new method for residuals()
> 
> On 03/10/2011 08:21 AM, ONKELINX, Thierry wrote:
> > Dear all,
> > 
> > I'm writing a package and I would like to reuse the residuals() 
> > function. When I use a function which calls the redefined residuals 
> > (for my custom class) I get an error (see below). It looks like the 
> > wrong method is used. The strange this is, that when it execute the 
> > code manually it get no error.
> 
> Hi Thierry --
> 
> I think this is a bug in the methods package.
> 
> Your package promotes stats::residuals to an S4 generic. 
> Normally this should work.
> 
> However, your package Depends: on lme4, which also promotes 
> stats::residuals to an S4 generic. Apparently, this 
> interferes with your own attempt to make a generic, even 
> though you do not import lme4 into your name space. As a 
> consequence of the (putative) bug, your package sees the 
> original stats::residuals.
> 
> A work-around seems to be to importFrom(lme4, residuals) and 
> do NOT import residuals from stats, so that your own method 
> is associated with the generic defined in lme4.
> 
> Martin
> 
> > 
> > Any suggestions?
> > 
> > Best regards,
> > 
> > Thierry
> > 
> > The entire source code is at
> > svn://scm.r-forge.r-project.org/svnroot/aflp
> > 
> > The code with the error.
> > 
> >> normalise(dummy)
> > Error in object$na.action : $ operator not defined for this S4 class
> >> traceback()
> > 5: naresid(object$na.action, object$residuals) at normalise.R#30 4:
> > residuals.default(outliers(data)) at normalise.R#30 3:
> > residuals(outliers(data)) at normalise.R#30 2:
> > nrow(residuals(outliers(data))) at normalise.R#30 1:
> > normalise(dummy) #This works fine
> >> data <- dummy nrow(residuals(outliers(data)))
> > [1] 0
> > 
> > NAMESPACE importFrom(stats, residuals, resid, hclust, princomp)
> > exportPattern(".")
> > 
> > METHODS setMethod("residuals", signature(object = "AFLP.outlier"), 
> > function(object, ...){ object at Residual } )
> > 
> > setMethod("resid", signature(object = "AFLP.outlier"), 
> > function(object, ...){ object at Residual } )
> > 
> > 
> ----------------------------------------------------------------------
> > ------
> >
> > 
> ir. Thierry Onkelinx
> > Instituut voor natuur- en bosonderzoek team Biometrie & 
> Kwaliteitszorg 
> > Gaverstraat 4 9500 Geraardsbergen Belgium
> > 
> > Research Institute for Nature and Forest team Biometrics & Quality 
> > Assurance Gaverstraat 4 9500 Geraardsbergen Belgium
> > 
> > tel. + 32 54/436 185 Thierry.Onkelinx at inbo.be www.inbo.be
> > 
> > To call in the statistician after the experiment is done may be no 
> > more than asking him to perform a post-mortem examination: 
> he may be 
> > able to say what the experiment died of. ~ Sir Ronald Aylmer Fisher
> > 
> > The plural of anecdote is not data. ~ Roger Brinner
> > 
> > The combination of some data and an aching desire for an 
> answer does 
> > not ensure that a reasonable answer can be extracted from a 
> given body 
> > of data. ~ John Tukey
> > 
> > ______________________________________________ 
> R-devel at r-project.org 
> > mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
> 
> 
> --
> Computational Biology
> Fred Hutchinson Cancer Research Center
> 1100 Fairview Ave. N. PO Box 19024 Seattle, WA 98109
> 
> Location: M1-B861
> Telephone: 206 667-2793
> 


[Rd] Problem with defining new method for residuals()
ONKELINX, Thierry