[Rd] Namespaces, coercion and setAs
roger koenker
roger at ysidro.econ.uiuc.edu
Fri Nov 26 18:50:33 CET 2004
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?
url: www.econ.uiuc.edu/~roger Roger Koenker
email rkoenker at uiuc.edu Department of Economics
vox: 217-333-4558 University of Illinois
fax: 217-244-6678 Champaign, IL 61820
More information about the R-devel
mailing list