asIgraph {intergraph} | R Documentation |
Coerce an object to class "igraph"
Description
Coerce objects to class "igraph".
Usage
asIgraph(x, ...)
## S3 method for class 'network'
asIgraph(x, amap = attrmap(), ...)
## S3 method for class 'data.frame'
asIgraph(x, directed = TRUE, vertices = NULL, vnames = NULL, ...)
Arguments
x |
R object to be converted |
... |
other arguments from/to other methods |
amap |
data.frame with attribute copy/rename rules, see
|
directed |
logical, whether the created network should be directed |
vertices |
NULL or data frame, optional data frame containing vertex attributes |
vnames |
character, name of the column in |
Details
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 amap
argument, see attrmap
for details. The function currently does
not support objects that represent neither bipartite networks nor
hypergraphs.
Value
Object of class "igraph".
See Also
Examples
### 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'