comboGroupsIter | R Documentation |
Returns an iterator for iterating over partitions of a vector into groups.
Supports random access via the [[
method.
GMP support allows for exploration of cases where the number of comboGroups is large.
Use the next
methods to obtain results in lexicographical order.
comboGroupsIter(v, numGroups = NULL, grpSizes = NULL,
retType = "matrix", Parallel = FALSE,
nThreads = NULL)
v |
Source vector. If |
numGroups |
An Integer. The number of groups that the vector will be partitioned into. The default is |
grpSizes |
A vector of whole numbers representing the size of each group. The default is |
retType |
A string, "3Darray" or "matrix", that determines the shape of the output. The default is "matrix". Note, "3Darray" can only be used when the size of each group is uniform. When the size of each group varies, the return output will always be a matrix. |
Parallel |
Logical value indicating whether results should be generated in parallel using |
nThreads |
Specific number of threads to be used. The default is |
Once you initialize a new iterator, the following methods are available:
nextIter
Retrieve the next lexicographical result
nextNIter
Pass an integer n to retrieve the next n lexicographical results
nextRemaining
Retrieve all remaining lexicographical results
currIter
Returns the current iteration
startOver
Resets the iterator
sourceVector
View the source vector
summary
Returns a list of summary information about the iterator
front
Retrieve the first lexicographical result
back
Retrieve the last lexicographical result
[[
Random access method. Pass a single value or a vector of valid indices. If a single value is passed, the internal index of the iterator will be updated, however if a vector is passed the internal state will not change. GMP support allows for flexible indexing.
If nextIter
is called, a named vector is returned if retType = "matrix"
. If retType = "3Darray"
, a named matrix is returned.
Otherwise a named matrix is returned when retType = "matrix"
and a named 3D array is returned when retType = "3Darray"
.
If nThreads
is utilized, it will only take effect if the number of elements requested is greater than some threshold (determined internally). E.g:
serial <- comboGroupsIter(50, 10) multi <- comboGroupsIter(50, 10, nThreads = 4) fetch1e6 <- multi@nextNIter(1e6) ## much faster than serial@nextNIter(1e6) fetch1e3 <- multi@nextNIter(1e3) ## only one thread used... same as serial@nextNIter(1e3) library(microbenchmark) microbenchmark(multi@nextNIter(1e6), serial@nextNIter(1e6), times = 20) microbenchmark(multi@nextNIter(1e3), serial@nextNIter(1e3), times = 20)
The maximum number of comboGroups that can be generated at one time is 2^{31} - 1
.
Joseph Wood
comboGroups
a = comboGroupsIter(12, 3)
a@nextIter()
a@nextNIter(3)
a@front()
all_remaining = a@nextRemaining()
dim(all_remaining)
a@summary()
a@back()
a[[5]]
a@summary()
a[[c(1, 17, 3)]]
a@summary()
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.