graph2T.Rd
Since 2005, package Matrix has supported coercions to and
from class graph
from package
graph.
Since 2013, this functionality has been exposed via functions
T2graph
and graph2T
, which, unlike methods for
as(from, "<Class>")
, support optional arguments.
graph2T(from, use.weights = )
T2graph(from, need.uniq = !isUniqueT(from), edgemode = NULL)
for graph2T()
, an R object of class
"graph"
;
for T2graph()
, a sparse matrix inheriting from
"TsparseMatrix"
.
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.
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!
one of NULL
, "directed"
, or
"undirected"
. The default NULL
looks if the matrix is
symmetric and assumes "undirected"
in that case.
For graph2T()
, a sparse matrix inheriting from
"TsparseMatrix"
.
For T2graph()
an R object of class "graph"
.
Package igraph, which provides similar coercions
to and from its class igraph
via functions
graph_from_adjacency_matrix
and as_adjacency_matrix
.
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)
DONTSHOW({
stopifnot(
identical(as(g3,"Matrix"), as(as(a2 + t(a2), "nMatrix"),"symmetricMatrix"))
,
identical(tg3 <- graph2T(g3), graph2T(g3, use.weights=FALSE))
,
identical(as(m3,"TsparseMatrix"), asUniqueT(tg3))
)
})
a. <- sparseMatrix(i=4:1, j=1:4, dimnames=list(n4, n4), repr="T") # no 'x'
show(a.) # "ngTMatrix"
show(g. <- as(a., "graph"))
DONTSHOW({
stopifnot(graph::edgemode(g.) == "undirected",
graph::numEdges(g.) == 2,
all.equal(as(g., "TsparseMatrix"),
as(a., "symmetricMatrix"))
)
})
}
#> Loading required namespace: graph