| vec_chop | R Documentation |
vec_chop() provides an efficient method to repeatedly slice a vector. It
captures the pattern of map(indices, vec_slice, x = x). When no indices
are supplied, it is generally equivalent to as.list().
vec_chop(x, ..., indices = NULL, sizes = NULL)
x |
A vector |
... |
These dots are for future extensions and must be empty. |
indices |
A list of positive integer vectors to slice |
sizes |
An integer vector of non-negative sizes representing sequential
indices to slice For example,
|
A list where each element has the same type as x. The size of the list is
equal to vec_size(indices), vec_size(sizes), or vec_size(x) depending
on whether or not indices or sizes is provided.
vec_slice()
vec_chop(1:5)
# These two are equivalent
vec_chop(1:5, indices = list(1:2, 3:5))
vec_chop(1:5, sizes = c(2, 3))
# Can also be used on data frames
vec_chop(mtcars, indices = list(1:3, 4:6))
# If you know your input is sorted and you'd like to split on the groups,
# `vec_run_sizes()` can be efficiently combined with `sizes`
df <- data_frame(
g = c(2, 5, 5, 6, 6, 6, 6, 8, 9, 9),
x = 1:10
)
vec_chop(df, sizes = vec_run_sizes(df$g))
# If you have a list of homogeneous vectors, sometimes it can be useful to
# combine, apply a function to the flattened vector, and chop according
# to the original indices. This can be done efficiently with `list_sizes()`.
x <- list(c(1, 2, 1), c(3, 1), 5, double())
x_flat <- vec_c(!!!x)
x_flat <- x_flat + max(x_flat)
vec_chop(x_flat, sizes = list_sizes(x))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.