[R] Dispatching on a dgCMatrix does not work.

Martin Morgan mtmorgan at fhcrc.org
Tue Dec 11 16:33:27 CET 2012


On 12/11/2012 01:46 PM, Søren Højsgaard wrote:
> I represent a graph as an adjacency matrix of class "dgCMatrix" (from the Matrix package).
>
>> xx
> 5 x 5 sparse Matrix of class "dgCMatrix"
>    a b c d e
> a . 1 1 . .
> b 1 . 1 . .
> c 1 1 . 1 1
> d . . 1 . 1
> e . . 1 1 .
>
> To check if the matrix defines and undirected graph, I have made the following functions/methods:
>
> is.UG <- function (object) {
>     UseMethod("is.UG")
> }
> is.UG.dgCMatrix <- function (object) {
>      is.adjMAT(object) && (max(abs(t(object) - object)) == 0)
> }
>
> Note: 1) is.adjMAT is homegrown and 2) I know there is an "isSymmetric" method, but I can't get that to work either. These functions are in a package and when I load the package I get:
>
>> is.UG(xx)
> Error in t.default(object) : argument is not a matrix

You take the transpose of a dgCMatrix. This is supposed to use one of the 
showMethods('t') from Matrix, but I guess your package NAMESPACE file does not 
importMethodsFrom(Matrix, t) or similar.

Martin Morgan

>
>> is.UG.dgCMatrix(xx)
> Error in t.default(object) : argument is not a matrix
>
> Interestingly, if I copy and past the definitions above into an R-session things do work:
>
>> is.UG <- function (object) {
> +    UseMethod("is.UG")
> + }
>> is.UG.dgCMatrix <- function (object) {
> +     is.adjMAT(object) && (max(abs(t(object) - object)) == 0)
> + }
>>
>> is.UG(xx)
> [1] TRUE
>> is.UG.dgCMatrix(xx)
> [1] TRUE
>
> Can anyone help here?
>
> Best regards
> Søren
>
>
> xx <- new("dgCMatrix"
>      , i = c(1L, 2L, 0L, 2L, 0L, 1L, 3L, 4L, 2L, 4L, 2L, 3L)
>      , p = c(0L, 2L, 4L, 8L, 10L, 12L)
>      , Dim = c(5L, 5L)
>      , Dimnames = list(c("a", "b", "c", "d", "e"), c("a", "b", "c", "d", "e"))
>      , x = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
>      , factors = list()
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>


-- 
Computational Biology / Fred Hutchinson Cancer Research Center
1100 Fairview Ave. N.
PO Box 19024 Seattle, WA 98109

Location: Arnold Building M1 B861
Phone: (206) 667-2793




More information about the R-help mailing list