From khansen at stat.Berkeley.EDU  Mon Oct 15 20:43:23 2007
From: khansen at stat.Berkeley.EDU (Kasper Daniel Hansen)
Date: Mon, 15 Oct 2007 11:43:23 -0700
Subject: [Rd] namespace, S4 and import
Message-ID: <4DB4D00D-E77E-476B-9CB8-776BECAE1489@stat.berkeley.edu>

Hi

I have been using a bit of namespaces in the past, but the following  
alludes me.

I am dealing with the Bioconductor packages Biobase and affy. Biobase  
has a namespace and affy does not. affy contains the S4 class  
"AffyBatch" which extends the "eSet" class in Biobase.

I am extending the AffyBatch class myself. My code works fine as long  
as I do not have any NAMESPACE file.

Now I am trying to add one. I am importing Biobase, but I cannot  
import affy since it does not have a NAMESPACE. However, when I try R  
CMD INSTALL it complains that it cannot find AffyBatch :

Error in setIs(Class, class2, classDef = classDef, where = where) :
   Unable to find package environment for class "AffyBatch" to revise  
subclass information

So how do I make the classes in affy available for my package when  
affy does not have a NAMESPACE?

The relevant lines from my DESCRIPTION file is
   Depends: R (>= 2.6), affy (>= 1.16), affxparser (>= 1.10),  
Biobase, methods
   LazyLoad: yes

and from my NAMESPACE file I have
   exportPattern("^[^\\.]")
   import(Biobase)

I have also tried (in desperation) to add a "require(affy)" in  
both .onLoad and .onAttach, but to no help.

While I am at this: as I remember it, in the old days we needed  
"require(methods)" in .onLoad to work with S4, is that still necessary?

I am using R-2.6.0 on OS X (PPC)

Thanks, Kasper



[Rd] namespace, S4 and import
Kasper Daniel Hansen