| asIgraph {intergraph} | R Documentation |
Coerce objects to class "igraph".
asIgraph(x, ...)
## S3 method for class 'network'
asIgraph(x, attrmap = attrmap(), ...)
## S3 method for class 'data.frame'
asIgraph(x, directed = TRUE,
vertices = NULL, vnames = NULL, ...)
x |
R object to be converted |
directed |
logical, whether the created network should be directed |
attrmap |
data.frame with attribute copy/rename
rules, see |
vertices |
NULL or data frame, optional data frame containing vertex attributes |
vnames |
character, name of the column in
|
... |
other arguments from/to other methods |
asIgraph is a generic function with methods
written for data frames and objects of class "network".
If x is a data frame, the method used is a wrapper
around graph.data.frame in package
igraph. The vnames argument was added so
that the user can specify which vertex attribute from the
data frame supplied through vertices argument is
used for vertex names (the name attribute in
igraph objects) in the returned result. By default
the vertex names are not created.
If x is of class "network" (package network)
the function uses asDF to extract data on
edges and vertex with their attributes (if present).
Network attributes are extracted as well. Not all
vertex/edge/network attributes are worth preserving
though. Attributes are copied, dropped or renamed based
on rules given in the attrmap argument, see
attrmap for details. The function currently
does not support objects that represent neither bipartite
networks nor hypergraphs.
Object of class "igraph".
### using 'asIgraph' on objects of class 'network' g <- asIgraph(exNetwork) # compare adjacency matrices netmat <- as.matrix(exNetwork, "adjacency") imat <- as.matrix(g, "adjacency") # drop the dimnames in 'netmat' dimnames(netmat) <- NULL # compare identical( netmat, imat ) ### using 'asIgraph' on data.frames # data frame with vertex ids and vertex attributes v <- 1:4 vd <- data.frame(id = v + 5, label=letters[1:4]) print(vd) # edge list (first two columns) and edge attributes e <- c(1,2, 2,3, 3,4, 4,1) ed <- data.frame(id1 = e[seq(1,8, by=2)]+5, id2=e[seq(2, 8, by=2)]+5, a=letters[1:4]) print(ed) # build the network # without vertex attributes g <- asIgraph(ed, directed=FALSE) # with vertex attributes gv <- asIgraph(ed, vertices=vd, directed=FALSE) # NOTE: Even though vertex ids start at 6 the network has 4 nodes: range(vd$id) # min and max of node ids if(require(igraph)) igraph::vcount(gv) # number of nodes in 'gv'