Since 2005, package Matrix has supported coercions to and from class graph from package list("graph"). Since 2013, this functionality has been exposed via functions T2graph and graph2T, which, unlike methods for as(from, "<Class>"), support optional arguments.
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.
Returns
For graph2T(), a sparse matrix inheriting from "TsparseMatrix".
For T2graph() an object of class "graph".
See Also
Package list("igraph"), which provides similar coercions to and from its class igraph via functions graph_from_adjacency_matrix and as_adjacency_matrix.
Examples
if(requireNamespace("graph")){ 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(graph::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), repr="T")# no 'x' show(a.)# "ngTMatrix" show(g. <- as(a.,"graph"))}