Generate vector subsets
Say we want to generate all subsets of a vector:
v <- 1:4
subsets(v)
#> [[1]]
#> [1] 1
#>
#> [[2]]
#> [1] 2
#>
#> [[3]]
#> [1] 3
#>
#> [[4]]
#> [1] 4
#>
#> [[5]]
#> [1] 1 2
#>
#> [[6]]
#> [1] 1 3
#>
#> [[7]]
#> [1] 1 4
#>
#> [[8]]
#> [1] 2 3
#>
#> [[9]]
#> [1] 2 4
#>
#> [[10]]
#> [1] 3 4
#>
#> [[11]]
#> [1] 1 2 3
#>
#> [[12]]
#> [1] 1 2 4
#>
#> [[13]]
#> [1] 1 3 4
#>
#> [[14]]
#> [1] 2 3 4
#>
#> [[15]]
#> [1] 1 2 3 4
It is also possible to only generate the subsets of, say, size 2 and 3:
v <- 1:4
subsets(v, n = 2:3)
#> [[1]]
#> [1] 1 2
#>
#> [[2]]
#> [1] 1 3
#>
#> [[3]]
#> [1] 1 4
#>
#> [[4]]
#> [1] 2 3
#>
#> [[5]]
#> [1] 2 4
#>
#> [[6]]
#> [1] 3 4
#>
#> [[7]]
#> [1] 1 2 3
#>
#> [[8]]
#> [1] 1 2 4
#>
#> [[9]]
#> [1] 1 3 4
#>
#> [[10]]
#> [1] 2 3 4
Split vector into chunks
Say we want to split a vector into three chunks of equal size:
x <- 1:6
chunk_vector(x, n = 3)
#> $`1`
#> [1] 1 2
#>
#> $`2`
#> [1] 3 4
#>
#> $`3`
#> [1] 5 6
Alternatively, we can split x
into chunks of size
n = 3
by setting type = 2
:
chunk_vector(x, n = 3, type = 2)
#> $`1`
#> [1] 1 2 3
#>
#> $`2`
#> [1] 4 5 6
Both somehow also works if n
is not a multiple of
length(x)
:
x <- 1:7
chunk_vector(x, n = 3)
#> $`1`
#> [1] 1 2 3
#>
#> $`2`
#> [1] 4 5
#>
#> $`3`
#> [1] 6 7
chunk_vector(x, n = 3, type = 2)
#> $`1`
#> [1] 1 2 3
#>
#> $`2`
#> [1] 4 5 6
#>
#> $`3`
#> [1] 7
To prevent such “odd” cases, set strict = TRUE
:
try(chunk_vector(1:7, n = 3, strict = TRUE))
#> Error in chunk_vector(1:7, n = 3, strict = TRUE) :
#> 'n' is not a multiple of 'length(x)'