Re: [Rd] Namespaces, coercion and setAs

From: <Matthias.Kohl_at_uni-bayreuth.de>
Date: Sat 27 Nov 2004 - 21:11:38 EST

Hello,

does adding the line

\alias{coerce,numeric,matrix.diag.csr-method}

to the Rd-file of your "matrix.diag.csr" class solve the mysterium?

Matthias

> Absolutely correct. Adding coerce to the NAMESPACE list of
> exportMethods
> resolves the problem. Leaves only the mildly mysterious
>
> Undocumented S4 methods:
> generic coerce and siglist numeric,matrix.diag.csr
> All user-level objects in a package (including S4 classes and methods)
> should have documentation entries.
>
> to clean up. Thanks very much!!
>
> Roger
>
> On Nov 26, 2004, at 12:29 PM, Roger Bivand wrote:
>
>> 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
>>
>
> ______________________________________________
> R-devel@stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel



R-devel@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Sat Nov 27 21:18:13 2004

This archive was generated by hypermail 2.1.8 : Fri 18 Mar 2005 - 09:01:46 EST