Sync (expand or compress) a vector

sync_vector(
  x,
  newLength,
  sep = " ",
  fill = TRUE,
  compressFun = NULL,
  expandFun = NULL,
  compressFunPart = NULL,
  silent = rock::opts$get("silent")
)

Arguments

x

The vector

newLength

The new length

sep

When not specifying compressFun and compressFunPart, the paste function is used to combine elements, and in that case, sep is passed to paste as separator.

fill

When expanding streams, whether to duplicate elements to fill the resulting vector. Ignored if fillFun is specified.

compressFun

If specified, when compressing streams, instead of pasting elements together using separator sep, the vectors are passed to function compressFun, which must accept a vector (to compress) and a single integer (with the desired resulting length of the vector).

expandFun

If specified, when expanding streams, instead of potentially filling the new larger vector with elements (if fill is TRUE), the vectors are passed to function expandFun, which must accept a vector (to compress) and a single integer (with the desired resulting length of the vector).

compressFunPart

A function to apply to the segments that are automatically created; this can be passed instead of compressFun.

silent

Whether to be silent or chatty.

Value

The synced vector

Examples

rock::sync_vector(letters[1:10], 15);
#>  [1] "a" "b" "b" "c" "d" "d" "e" "f" "f" "g" "h" "h" "i" "j" "j"
rock::sync_vector(letters[1:10], 5);
#> [1] "a b" "c d" "e f" "g h" "i j"