Chunk atomic vectors into parts of roughly equal size. chunk() takes a vector length n and returns an integer with chunk numbers. chunk_vector() uses base::split() and chunk() to split an atomic vector into chunks.

chunk_vector(x, n_chunks = NULL, chunk_size = NULL, shuffle = TRUE)

chunk(n, n_chunks = NULL, chunk_size = NULL, shuffle = TRUE)

Arguments

x

:: vector()
Vector to split into chunks.

n_chunks

:: integer(1)
Requested number of chunks. Mutually exclusive with chunk_size and props.

chunk_size

:: integer(1)
Requested number of elements in each chunk. Mutually exclusive with n_chunks and props.

shuffle

:: logical(1)
If TRUE, permutes the order of x before chunking.

n

:: integer(1)
Length of vector to split.

Value

chunk() returns a integer() of chunk indices, chunk_vector() a list() of integer vectors.

Examples

x = 1:11 ch = chunk(length(x), n_chunks = 2) table(ch)
#> ch #> 1 2 #> 6 5
split(x, ch)
#> $`1` #> [1] 1 2 4 7 9 10 #> #> $`2` #> [1] 3 5 6 8 11 #>
chunk_vector(x, n_chunks = 2)
#> [[1]] #> [1] 2 3 4 7 9 10 #> #> [[2]] #> [1] 1 5 6 8 11 #>
chunk_vector(x, n_chunks = 3, shuffle = TRUE)
#> [[1]] #> [1] 5 7 9 10 #> #> [[2]] #> [1] 1 6 8 11 #> #> [[3]] #> [1] 2 3 4 #>