Creating igraph graphs from data frames
This function creates an igraph graph from one or two data frames containing the (symbolic) edge list and edge/vertex attributes.
graph.data.frame(d, directed=TRUE, vertices=NULL)
- A data frame containing a symbolic edge list in the first two columns. Additional columns are considered as edge attributes.
- Logical scalar, whether or not to create a directed graph.
- A data frame with vertex metadata, or
NULL. See details below.
graph.data.frame creates igraph graphs from one or two data
frames. It has two modes of operatation, depending whether the
vertices argument is
NULL or not.
NULL, then the first two columns of
d are used as a symbolic edge list and additional columns as
edge attributes. The names of the attributes are taken from the names
of the columns.
vertices is not
NULL, then it must be a data frame
giving vertex metadata. The first column of
vertices is assumed
to contain symbolic vertex names, this will be added to the graphs as
vertices is not
then the symbolic edge list given in
d is checked to contain
only vertex names listed in
- An igraph graph object.
NA elements in the first two columns
NAs will correspond to a single vertex.
NA elements in the first column of
NA, but other vertex attributes can.
## A simple example with a couple of actors ## The typical case is that these tables are read in from files.... actors <- data.frame(name=c("Alice", "Bob", "Cecil", "David", "Esmeralda"), age=c(48,33,45,34,21), gender=c("F","M","F","M","F")) relations <- data.frame(from=c("Bob", "Cecil", "Cecil", "David", "David", "Esmeralda"), to=c("Alice", "Bob", "Alice", "Alice", "Bob", "Alice"), same.dept=c(FALSE,FALSE,TRUE,FALSE,FALSE,TRUE), friendship=c(4,5,5,2,1,1), advice=c(4,5,5,4,2,3)) g <- graph.data.frame(relations, directed=TRUE, vertices=actors) print(g, e=TRUE, v=TRUE)