Tools for manipulating systems of linear (in)equalities
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
examples
pkg
.gitignore
.travis.yml
README.md
build.sh
compile.sh
document.sh
drat.sh
test.sh

README.md

Build Status Coverage Status CRAN Downloads

lintools

Tools for manipulating systems of linear (in)equations.

The package offers fairly generic functionality for manipulating linear systems. Some if not all of this is functionality is probably available in R, scattered accross packages. This package (re)implements such manipulations and offers them with a basic but consistent interface.

To test the latest beta version, please install it with the instructions below. We're happy to receive feedback on the issues page.

Compactifying

Simplify sets of equations by removing spurious rows and columns and combining inequations of the form

a.x >= 0
a.x <= 0

into a single equality

a.x == 0

Blocking

Separate matrices into independent blocks.

Reduced row echelon

Bring linear systems in reduced row echelon form.

Substitute variables

Simplify systems of (in)equations when one or more of the values is known.

Eliminate variables

Rewrite systems by eliminating variables. Gaussian elimination for equalities or Fourier-Motzkin elimination for inequalities.

Feasibility checks

Check whether a system of linear (in)equations has any solution.

Project on convex polytope

Given a vector not satisfying a set of (in)equations, project it onto the convex polytope described by the restrictions.

Test for total unimodularity

Given a system of equalities A.x=b, there exist integer solutions x iff A and b are integer and A is totally unimodular.

Installation

To install the latest CRAN version, open an R session and type

install.packages("lintools")

To get the latest beta version from our drat repo (first install drat if you don't already have it):

drat::addRepo("data-cleaning")
install.packages("lintools")