Learn R Programming

intergraph (version 2.0-4)

asIgraph: Coerce an object to class "igraph"

Description

Coerce objects to class "igraph".

Usage

asIgraph(x, ...)

# S3 method for network asIgraph(x, amap = attrmap(), ...)

# S3 method for data.frame asIgraph(x, directed = TRUE, vertices = NULL, vnames = NULL, ...)

Value

Object of class "igraph".

Arguments

x

R object to be converted

...

other arguments from/to other methods

amap

data.frame with attribute copy/rename rules, see attrmap

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 vertices to be used as a name vertex attribute, if NULL no vertex names are created

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.

See Also

Examples

Run this code
### 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'

Run the code above in your browser using DataLab