Maps numeric items in x into groups with sum
less or equal than capacity.
A very simple greedy algorithm is used, which is not really optimized
for speed. This is a convenience function for smaller vectors, not
a competetive solver for the real binbacking problem.
If an element of x exceeds capacity, an error
is thrown.
Arguments
- x
[numeric]
Numeric vector of elements to group.
- capacity
[numeric(1)]
Maximum capacity of each bin, i.e., elements will be grouped
so their sum does not exceed this limit.
Value
[integer]. Integer with values “1” to “n.bins”
indicating bin membership.
Examples
x = 1:10
bp = binPack(x, 11)
xs = split(x, bp)
print(xs)
#> $`1`
#> [1] 1 10
#>
#> $`2`
#> [1] 2 9
#>
#> $`3`
#> [1] 3 8
#>
#> $`4`
#> [1] 4 7
#>
#> $`5`
#> [1] 5 6
#>
print(sapply(xs, sum))
#> 1 2 3 4 5
#> 11 11 11 11 11