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 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
Returns
Object of class "igraph".
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.
Examples
### using 'asIgraph' on objects of class 'network'g <- asIgraph(exNetwork)# compare adjacency matricesnetmat <- as.matrix(exNetwork,"adjacency")imat <- as.matrix(g,"adjacency")# drop the dimnames in 'netmat'dimnames(netmat)<-NULL# compareidentical( netmat, imat )### using 'asIgraph' on data.frames# data frame with vertex ids and vertex attributesv <-1:4vd <- data.frame(id = v +5, label=letters[1:4])print(vd)# edge list (first two columns) and edge attributese <- 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 attributesg <- asIgraph(ed, directed=FALSE)# with vertex attributesgv <- 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 idsif(require(igraph)) igraph::vcount(gv)# number of nodes in 'gv'