numPerms() tries harder to avoid floating point issues
when computing the number of permutations for the current design.
#41shuffleFree() allowed
shuffleFree(x = 1:10), with x passed
immediately to sample.int(), which is incorrect and raises
an error in the development version of R (at the time of writing).
Reported by Brian Ripley.allPerms() was calling allSeries() with
the incorrect number of permutations, leading to problems with
shuffleSet() also. #28 reported by
Cajo ter BraakChanges to accommodate the new RNG in R >= 3.6.0
The example in ?check was made to suppress package
startup messages from vegan.
This release fixed some non-canonical-form CRAN URLs.
This release was purely to avoid issues with CRAN as a new release of vegan had been released and the example reference material hadn’t been updated to match.
A minor bug fix release to address a single problem.
shuffleSet() wasn’t returning a matrix if
nset = 1 and allPerms was invoked
because of a low set of possible permutations. GitHub Issue
#19This is small update to permute, focused mainly on ensuring the many combinations of restrictions on permutations allowed by the package work. An extensive test suite has been written which covers ~87% of the package’s codebase at the time of release.
Permutation matrices produced by shuffleSet() are
now printed in a more compact form.
Better heuristics in check() allow for more reliable
permutations (i.e. fewer duplicate permutations) when the set is small.
This has increased the minperms setting. Consequently we
generate all possible permutations up to ~500,000 more often as we now
randomly sample from the entirely generated set rather than randomly
generate permutations. This provides a small performance hit in some
rare cases.
shuffleSet() has a new argument
quietly = FALSE which is passed on to
check().
A number of bugs were fixed. See the Changelog and the Bug reports on github for details.
permControl() and permuplot() are defunct
and have been removed from the package.how(), a new function to create permutation designs.
This replaces the deprecated function permControl.
permute gains the addition of true blocking structures with which to restrict the permutations. Blocks sit as the outermost layer of the permutations, and can contain plots which in turn contain samples. In contrasts to plots, blocks are never permuted and samples are never shuffled between blocks. Permutation only ever happens within blocks.
To facilitate this, plot-level strata are now specified via
Plots() instead of via the old strata argument
of how(). Blocks are specified via a new argument
blocks, which takes a factor variable.
A new suite of extractor and replacement functions is provided
with which to interact with permutation designs created by
how(). Extractor functions have namesgetFoo(), whereFoo()is a component of the design. Replacement functions have namessetFoo`.
The replacement function are especially for use by package authors
wishing to alter permutation within their functions. The extractor
functions are recommended for all users wishing to extract features of
the permutation design.
As a convenience for users, the function will now work with
objects of classes "how", "Plots" or
"Within" to allow quick updating of features of the
permutation design. This approach is intended for interactive use at the
top-level and not within functions, where the new setFoo
replacement functions should be used.
shuffleSet() is enhanced in this version. Firstly,
the function now returns a classed object which has a
print() method to allow for compact printing of the design
elements used to generate the set of permutations. Second,
shuffleSet() will sample nset permutations
from the entire set of permutations should a small number of possible
permutations trigger generation of the entire set. This avoids the
generation of a set of non-unique permutations. Finally the random seed
that generated the set is stored as an attribute.
allPerms() no longer assumes that samples are in
block and/or plot ordering.
The package vignette is much expanded in this version with new sections on using permute within functions that will be of interest to package authors wishing to use permute in their packages.
permControl() is deprecated in favour of
how().
permuplot() is broken and effectively defunct given
the changes to the way permutation are defined and the addition of
blocks. permuplot() is no longer exported from the package
namespace.