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

> 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@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.

Reply via email to