Creating (small) graphs via a simple interface
This function is useful if you want to create a small (named) graph quickly, it works for both directed and undirected graphs.
graph.formula(..., simplify = TRUE)
- The formulae giving the structure of the graph, see details below.
- Logical scalar, whether to call
simplifyon the created graph. By default the graph is simplified, loop and multiple edges are removed.
graph.formula is very handy for creating small graphs quickly.
You need to supply one or more R expressions giving the structure of
the graph. The expressions consist of vertex names and edge
operators. An edge operator is a sequence of
If all edge operators consist of only
Let us see some simple examples. Without arguments the function creates an empty graph: graph.formula()
A simple undirected graph with two vertices called
Remember that the length of the edges does not matter, so we could have written the following, this creates the same graph: graph.formula( A-----B )
If you have many disconnected components in the graph, separate them with commas. You can also give isolate vertices. graph.formula( A--B, C--D, E--F, G--H, I, J, K )
In directed graphs, edges will be created only if the edge operator
includes a arrow head (
Mutual edges can be also created with a simple edge operator:
graph.formula( A +-+ B +---+ C ++ D + E)
Note again that the length of the edge operators is arbitrary,
If the vertex names include spaces or other special characters then
you need to quote them:
graph.formula( "this is" +- "a silly" -+ "graph here" )
You can include any character in the vertex names this way, even
See more examples below.
- A new graph object.
graph for more general graph creation methods.
# A simple undirected graph g <- graph.formula( Alice-Bob-Cecil-Alice, Daniel-Cecil-Eugene, Cecil-Gordon ) g # Another undirected graph, ":" notation g2 <- graph.formula( Alice-Bob:Cecil:Daniel, Cecil:Daniel-Eugene:Gordon ) g2 # A directed graph g3 <- graph.formula( Alice +-+ Bob --+ Cecil +-- Daniel, Eugene --+ Gordon:Helen ) g3 # A graph with isolate vertices g4 <- graph.formula( Alice -- Bob -- Daniel, Cecil:Gordon, Helen ) g4 V(g4)$name # "Arrows" can be arbitrarily long g5 <- graph.formula( Alice +---------+ Bob ) g5 # Special vertex names g6 <- graph.formula( "+" -- "-", "*" -- "/", "%%" -- "%/%" ) g6