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)

Arguments

x
method
pairs

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 methods greedy.weighted and strictly.weighted and can be NULL (in which case a default is constructed in lexicographical order).

method

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.

decreasing

A logical indicating whether the sorting is done according to increasing or decreasing weights.

Value

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().

See also

zenplot() which provides the zenplot.

Other tools related to constructing zenpaths: connect_pairs(), extract_pairs(), graph_pairs(), groupData(), indexData()

Author

Marius Hofert and Wayne Oldford

Examples

## 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