R: Conversions "graph" <-> (sparse) Matrix

graph-sparseMatrix {Matrix} | R Documentation

## Conversions "graph" <–> (sparse) Matrix

### Description

The Matrix package has supported conversion from and to `"graph"` objects from (Bioconductor) package graph since summer 2005, via the usual `as(., "<class>")` coercion,

      as(from, Class)

Since 2013, this functionality is further exposed as the `graph2T()` and `T2graph()` functions (with further arguments than just `from`), which convert graphs to and from the triplet form of sparse matrices (of class `"TsparseMatrix"`) .

### Usage

    graph2T(from, use.weights = )
    T2graph(from, need.uniq = is_not_uniqT(from), edgemode = NULL)

### Arguments

`from` | for `graph2T()`, an R object of class `"graph"`; for `T2graph()`, a sparse matrix inheriting from `"TsparseMatrix"`.
`use.weights` | logical indicating if weights should be used, i.e., equivalently the result will be numeric, i.e. of class `dgTMatrix`; otherwise the result will be `ngTMatrix` or `nsTMatrix`, the latter if the graph is undirected. The default looks if there are weights in the graph, and if any differ from `1`, weights are used.
`need.uniq` | a logical indicating if `from` may need to be internally “uniqified”; do not set this and hence rather use the default, unless you know what you are doing!
`edgemode` | one of `NULL`, `"directed"`, or `"undirected"`. The default `NULL` looks if the matrix is symmetric and assumes `"undirected"` in that case.

### Value

For `graph2T()`, a sparse matrix inheriting from `"TsparseMatrix"`.

For `T2graph()` an R object of class `"graph"`.

### See Also

Note that the CRAN package igraph also provides conversions from and to sparse matrices (of package Matrix) via its `graph.adjacency()` and `get.adjacency()`.

### Examples

    if(isTRUE(try(require(graph)))) { ## super careful .. for "checking reasons"
      n4 <- LETTERS[1:4]; dns <- list(n4,n4)
      show(a1 <- sparseMatrix(i= c(1:4),   j=c(2:4,1),   x = 2,    dimnames=dns))
      show(g1 <- as(a1, "graph")) # directed
      unlist(edgeWeights(g1)) # all '2'

      show(a2 <- sparseMatrix(i= c(1:4,4), j=c(2:4,1:2), x = TRUE, dimnames=dns))
      show(g2 <- as(a2, "graph")) # directed
      # now if you want it undirected:
      show(g3  <- T2graph(as(a2,"TsparseMatrix"), edgemode="undirected"))
      show(m3 <- as(g3,"Matrix"))
      show( graph2T(g3) ) # a "pattern Matrix" (nsTMatrix)

      a. <- sparseMatrix(i= 4:1, j=1:4, dimnames=list(n4,n4), giveC=FALSE) # no 'x'
      show(a.) # "ngTMatrix"
      show(g. <- as(a., "graph"))

    }

[Package Matrix version 1.1-4 Index]