vec_interleave()
combines multiple vectors together, much like vec_c()
,
but does so in such a way that the elements of each vector are interleaved
together.
It is a more efficient equivalent to the following usage of vec_c()
:
vec_interleave(x, y) == vec_c(x[1], y[1], x[2], y[2], ..., x[n], y[n])
vec_interleave(
...,
.ptype = NULL,
.name_spec = NULL,
.name_repair = c("minimal", "unique", "check_unique", "universal", "unique_quiet",
"universal_quiet")
)
Vectors to interleave. These will be recycled to a common size.
If NULL
, the default, the output type is determined by
computing the common type across all elements of ...
.
Alternatively, you can supply .ptype
to give the output known type.
If getOption("vctrs.no_guessing")
is TRUE
you must supply this value:
this is a convenient way to make production code demand fixed types.
A name specification for combining
inner and outer names. This is relevant for inputs passed with a
name, when these inputs are themselves named, like outer = c(inner = 1)
, or when they have length greater than 1: outer = 1:2
. By default, these cases trigger an error. You can resolve
the error by providing a specification that describes how to
combine the names or the indices of the inner vector with the
name of the input. This specification can be:
A function of two arguments. The outer name is passed as a string to the first argument, and the inner names or positions are passed as second argument.
An anonymous function as a purrr-style formula.
A glue specification of the form "{outer}_{inner}"
.
An rlang::zap()
object, in which case both outer and inner
names are ignored and the result is unnamed.
See the name specification topic.
How to repair names, see repair
options in
vec_as_names()
.
list_unchop()
# The most common case is to interleave two vectors
vec_interleave(1:3, 4:6)
# But you aren't restricted to just two
vec_interleave(1:3, 4:6, 7:9, 10:12)
# You can also interleave data frames
x <- data_frame(x = 1:2, y = c("a", "b"))
y <- data_frame(x = 3:4, y = c("c", "d"))
vec_interleave(x, y)
Run the code above in your browser using DataLab