From Roger.Bivand at nhh.no  Fri Nov 26 19:29:29 2004
From: Roger.Bivand at nhh.no (Roger Bivand)
Date: Fri Nov 26 19:29:45 2004
Subject: [Rd] Namespaces, coercion and setAs
In-Reply-To: <AB6CEF9E-3FD3-11D9-9DB8-000393A361A2@ysidro.econ.uiuc.edu>
Message-ID: <Pine.LNX.4.44.0411261922360.7240-100000@reclus.nhh.no>

On Fri, 26 Nov 2004, roger koenker wrote:

> I'm trying to resolve a small problem that has arisen from introducing a
> NAMESPACE for the package SparseM.  Prior to the namespace I had a class
> "matrix.diag.csr" that consisted of diagonal sparse matrices.  It was
> defined to have the same attributes as the matrix.csr class and setAs
> was used to define how to coerce integers and vectors into this form:
> 
> setClass("matrix.diag.csr","matrix.csr")
> 
> setAs("numeric","matrix.diag.csr",function(from){
>          if(length(from)==1){
>                  n <- as.integer(from)
>                  if(n>0) from  <-  rep(1,n)
>                  else stop("Sparse identity matrices must have positive, 
> integer dimension")
>                  }
>          else n <- length(from)
>          return(new("matrix.diag.csr", ra = from ,ja = as.integer(1:n),
>                  ia = as.integer(1:(n+1)), dimension = 
> as.integer(c(n,n))))
>          })
> 
> This seemed to be fine.   I could do,
> 
> 	A  <- as(5,"matrix.diag.csr")
> 
> and A would be a 5x5 identity matrix in sparse form.  But post-namespace
> I get:
> 
>  >A <- as(5,"matrix.diag.csr") Error in as(5, "matrix.diag.csr") : No
> method or default for coercing "numeric" to "matrix.diag.csr"
> 
> so apparently using exportClass(matrix.diag.csr)  isn't sufficient for
> coerce to know what to do. Using findClass("matrix.diag.csr") indicates
> that the class is recognized to be from SparseM, so my question is:  is
> there some mechanism that I'm missing in the NAMESPACE scheme that would
> enable my old setAs() directive to work, or is there some other
> suggestion on how to proceed?

I'm far from sure about this, but is "coerce" one of the exported methods? 
I'm having the same difficulty in retrofitting a NAMESPACE to the 
forthcoming sp package of spatial classes, for S4 classes. 

I see from src/library/methods/NAMESPACE that as and coerce are exported 
from there - should a package with a NAMESPACE and S4 classes do 

import(methods) ?

Roger

> 
> 
> url:	www.econ.uiuc.edu/~roger        	Roger Koenker
> email	rkoenker@uiuc.edu			Department of Economics
> vox: 	217-333-4558				University of Illinois
> fax:   	217-244-6678				Champaign, IL 61820
> 
> ______________________________________________
> R-devel@stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
> 

-- 
Roger Bivand
Economic Geography Section, Department of Economics, Norwegian School of
Economics and Business Administration, Breiviksveien 40, N-5045 Bergen,
Norway. voice: +47 55 95 93 55; fax +47 55 95 93 93
e-mail: Roger.Bivand@nhh.no


[Rd] Namespaces, coercion and setAs
Roger Bivand