Learn R Programming

Group theory in R: the permutations package

Overview

The permutations package provides R-centric functionality for working with permutations of a finite set. It includes group-theoretic composition of permutations and can transform from word form to cycle form and back.

Installation

You can install the released version of permutations from CRAN with:

# install.packages("permutations")  # uncomment this to use the package
library("permutations")
#> 
#> Attaching package: 'permutations'
#> The following object is masked from 'package:stats':
#> 
#>     cycle

The package is maintained on github.

The permutations package in use

Random permutations on a finite set are given by the rperm() command:

(x <- rperm(10, 9))
#>  [1] (19524)(37)    (1238794)      (1745682)(39)  (15)(3897)(46) (132654789)   
#>  [6] (17263)(59)    (136)(47589)   (162)(4795)    (14763)(259)   (168347925)   
#> [coerced from word form]

Above, object x is internally stored as a matrix (word form) but the result is printed in cycle form by default, as this is easier to understand. We can print in word form if we wish:

options(print_word_as_cycle = FALSE) # override default
as.word(x)
#>      {1} {2} {3} {4} {5} {6} {7} {8} {9}
#> [1]  9   4   7   1   2   .   3   .   5  
#> [2]  2   3   8   1   .   .   9   7   4  
#> [3]  7   1   9   5   6   8   4   2   3  
#> [4]  5   .   8   6   1   4   3   9   7  
#> [5]  3   6   2   7   4   5   8   9   1  
#> [6]  7   6   1   .   9   3   2   .   5  
#> [7]  3   .   6   7   8   1   5   9   4  
#> [8]  6   1   .   7   4   2   9   .   5  
#> [9]  4   5   1   7   9   3   6   .   2  
#> [10] 6   5   4   7   1   8   9   3   2
options(print_word_as_cycle = TRUE) # restore default: we usually want to print a cycle irregardless

(A dot indicates a fixed point). The package uses arithmetic operations * to combine permutations and ^ for conjugation:

(a <- as.word(c(4, 2, 3, 1, 5, 7, 6)))
#> [1] (14)(67)
#> [coerced from word form]
(b <- as.cycle(1:4))
#> [1] (1234)
a * b
#> [1] (234)(67)
#> [coerced from word form]
b * a
#> [1] (123)(67)
#> [coerced from word form]

The megaminx

The megaminx is a dodecahedral puzzle with similar construction to the Rubik cube puzzle that has 50 movable pieces and 132 coloured stickers (“facets”). The permutations package includes functionality to simulate the megaminx and exhibits an 82-turn superflip. The vignette gives an extended discussion.

Copy Link

Version

Install

install.packages('permutations')

Monthly Downloads

468

Version

1.1-9-1

License

GPL-2

Issues

Pull Requests

Stars

Forks

Maintainer

Robin K S Hankin

Last Published

July 13th, 2026

Functions in permutations (1.1-9-1)

cyclist

details of cyclists
fixed

Fixed elements
megaminx_plotter

Plotting routine for megaminx sequences
nullperm

Null permutations
orbit

Orbits of integers
permorder

The order of a permutation
megaminx_superflip

The Megaminx Superflip
length

Various vector-like utilities for permutation objects.
outer

Outer product of vectors of permutations
megaminx

megaminx
permutation

Functions to create and coerce word objects and cycle objects
perm_matrix

Permutation matrices
swap

Length-2 cycles; swap a pair of elements
shape

Shape of a permutation
rperm

Random permutations
sgn

Sign of a permutation
stabilizer

Stabilizer of a permutation
permutations-package

tools:::Rd_package_title("permutations")
size

Gets or sets the size of a permutation
valid

Functions to validate permutations
tidy

Utilities to neaten permutation objects
print

Print methods for permutation objects
cayley

Cayley tables for permutation groups
Extract

Extract or Replace elements of permutation vectors
allperms

All permutations with given characteristics
caydist

Cayley distance
conjugate

Are two permutations conjugate?
as.function.permutation

Coerce a permutation to a function
capply

Apply functions to elements of a cycle
commutator

Group-theoretic commutator: the dot object
c

Concatenation of permutations
inverse

Inverse of a permutation
id

The identity permutation
keepcyc

Keep or discard some cycles of a permutation
fbin

The fundamental bijection
get1

Retrieve particular cycles or components of cycles
faro

Faro shuffles
Ops.permutation

Arithmetic Ops Group Methods for permutations
dodecahedron

The dodecahedron group
derangement

Tests for a permutation being a derangement