| graph.data.frame {igraph} | R Documentation |
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)
get.data.frame(x, what=c("edges", "vertices", "both"))
d |
A data frame containing a symbolic edge list in the first two
columns. Additional columns are considered as edge attributes.
Since version 0.7 this argument is coerced to a data frame with
|
directed |
Logical scalar, whether or not to create a directed graph. |
vertices |
A data frame with vertex metadata, or |
x |
An igraph object. |
what |
Character constant, whether to return info about vertices, edges, or both. The default is ‘edges’. |
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.
If vertices is 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.
If 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
the ‘name’ vertex attribute. Other columns will be added
as additional vertex attributes. If vertices is not NULL
then the symbolic edge list given in d is checked to contain
only vertex names listed in vertices.
Typically, the data frames are exported from some speadsheat software
like Excel and are imported into R via read.table,
read.delim or read.csv.
get.data.frame converts the igraph graph into one or more data
frames, depending on the what argument.
If the what argument is edges (the default), then the
edges of the graph and also the edge attributes are returned. The
edges will be in the first two columns, named from and
to. (This also denotes edge direction for directed graphs.)
For named graphs, the vertex names will be included in these columns,
for other graphs, the numeric vertex ids. The edge attributes will be
in the other columns. It is not a good idea to have an edge attribute
named from or to, because then the column named in the
data frame will not be unique. The edges are listed in the order of
their numeric ids.
If the what argument is vertices, then vertex attributes
are returned. Vertices are listed in the order of their numeric vertex
ids.
If the what argument is both, then both vertex and edge
data is returned, in a list with named entries vertices and
edges.
An igraph graph object for graph.data.frame, and either a data
frame or a list of two data frames named edges and
vertices for as.data.frame.
For graph.data.frame NA elements in the first two
columns ‘d’ are replaced by the string “NA” before
creating the graph. This means that all NAs will correspond to
a single vertex.
NA elements in the first column of ‘vertices’ are also
replaced by the string “NA”, but the rest of ‘vertices’
is not touched. In other words, vertex names (=the first column)
cannot be NA, but other vertex attributes can.
Gabor Csardi csardi.gabor@gmail.com
graph.constructors and
graph.formula for other ways to create graphs,
read.table to read in tables from files.
## 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)
## The opposite operation
get.data.frame(g, what="vertices")
get.data.frame(g, what="edges")