Constructing zenpaths and tools for extracting, connecting and displaying pairs, as well as grouping and indexing data structures.
zenpath(x, pairs = NULL,
method = c("front.loaded", "back.loaded",
"balanced", "eulerian.cross",
"greedy.weighted", "strictly.weighted"),
decreasing = TRUE)
a two-column matrix
containing (row-wise)
the pairs of connected variables to be sorted according to the
weights. Note that the resulting graph must be connected
(i.e. any variable can be reached from any other variable
following the connections given by pairs
).
The pairs
argument is only used for the method
s
greedy.weighted
and strictly.weighted
and can be
NULL
(in which case a default is constructed in lexicographical order).
character
string indicating the sorting
method to be used. Available methods are:
"front.loaded"
:Sort all pairs such that the first variables appear the most frequently early in the sequence; an Eulerian path; note that it might be slightly longer than the number of pairs because, first, an even graph has to be made.
"back.loaded"
:Sort all pairs such that the later variables appear the most frequently later in the sequence; an Eulerian path (+ see front.loaded concerning length)
"balanced"
:Sort all pairs such that all variables appear in balanced blocks throughout the sequence (a Hamiltonian Decomposition; Eulerian, too).
"eulerian.cross"
:Generate a sequence of pairs such that each is formed with one variable from each group.
"greedy.weighted"
:Sort all pairs according to a greedy (heuristic)
Euler path with x
as weights visiting each
edge precisely once.
"strictly.weighted"
:Strictly respect the order of the weights - so the first, second,
third, and so on, adjacent pair of numbers of the output of
zenpath()
corresponds to the pair with largest,
second-largest, third-largest, and so on, weight.
A logical
indicating whether the
sorting is done according to increasing or decreasing weights.
Returns a sequence of variables (indices or names,
possibly a list of such), which can then be used to index the data
(via groupData()
for plotting via zenplot()
.
zenplot()
which provides the zenplot.
Other tools related to constructing zenpaths:
connect_pairs()
,
extract_pairs()
,
graph_pairs()
,
groupData()
,
indexData()
## Some calls of zenpath()
zenpath(10) # integer argument
#> [1] 1 2 3 1 4 2 5 1 6 2 7 1 8 2 9 1 10 2 3 4 5 3 6 4 7
#> [26] 3 8 4 9 3 10 4 5 6 7 5 8 6 9 5 10 6 7 8 9 7 10 8 9 10
## Note that the result is of length 50 > 10 choose 2 as the underlying graph has to
## be even (and thus edges are added here)
(zp <- zenpath(c(3, 5), method = "eulerian.cross")) # integer(2) argument
#> [1] 1 4 2 5 1 6 2 7 1 8 3 4 3 6 7 3 5 8 2