[Rd] Matrix / SparseM conflict (PR#8618)
Prof Brian Ripley
ripley at stats.ox.ac.uk
Mon Feb 20 15:29:10 CET 2006
On Mon, 20 Feb 2006, Duncan Murdoch wrote:
> On 2/20/2006 8:54 AM, dpleydel at univ-fcomte.fr wrote:
>> Full_Name: David Pleydell
>> Version: 2.2.1
>> OS: Debian Etch
>> Submission from: (NULL) (126.96.36.199)
>> There appears to be a conflict between the chol functions from the Matrix and
>> the SparseM packages. chol() can only be applied to a matrix of class dspMatrix
>> if SparseM is not in the path.
> This isn't a bug, it's simply that both Matrix and SparseM define a
> generic for chol (though Matrix actually gets it by converting the
> function in base).
The problem appears to be that SparseM first redefines chol as an S3
generic and then defines S4 methods on it. As no new S3 methods are then
defined the S3 step would seem unnecessary, but it is used to allow the
package to define S4 methods on a different signature from R's chol().
(That seems to me to be asking for trouble.)
Only the package maintainer of SparseM can do anything about this.
Beyond, that I guess it is a consequence of namespaces that Matrix
defines methods via a derived generic on base::chol and not on the generic
chol in SparseM. That needs further thought by someone (JMC?) who
understands the S4 internals.
> If you want access to the version in Matrix after attaching SparseM
> ahead of it in the search path, use Matrix::chol.
But the whole point of generic functions is to allow one to write generic
Brian D. Ripley, ripley at stats.ox.ac.uk
Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/
University of Oxford, Tel: +44 1865 272861 (self)
1 South Parks Road, +44 1865 272866 (PA)
Oxford OX1 3TG, UK Fax: +44 1865 272595
More information about the R-devel