Learn R Programming

intergraph (version 1.2-0)

as.igraph: Coerce to a object of class "igraph"

Description

Convert objects to class "igraph".

Usage

as.igraph(object, ...)
## S3 method for class 'network':
as.igraph(object, attrmap=attrmap(), ...)
## S3 method for class 'data.frame':
as.igraph(object, directed=TRUE, vertices=NULL, vnames=NULL, ...)

Arguments

object
R object to be converted
directed
logical, whether the created network should be directed
attrmap
data.frame with attribute copy/rename rules, see attrmap
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
...
other arguments from/to other methods

Value

  • Object of class "igraph".

Details

as.igraph is a generic function with methods written for data frames and objects of class network.

If object 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 object 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.

See Also

graph.data.frame

Examples

Run this code
### using 'as.igraph' on objects of class 'network'

# package 'network' is required because 'as.network.matrix' is defined there
if(require(network))
{
  g <- as.igraph(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 'as.igraph' 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 <- as.igraph(ed, directed=FALSE)
# with vertex attributes
gv <- as.igraph(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(igraph0)) igraph0::vcount(gv) # number of nodes in 'gv'

Run the code above in your browser using DataLab