Easily reconstruct a string vector that has been split with string_split2df()
.
paste_conditional(x, id, sep = " ", names = TRUE, sort = TRUE)
A character vector or a formula. If a vector: it represents the
values to be pasted together.
If a formula, it must be of the form
my_string ~ id1 + id2
with on the left the character vector and on the right
the (possibly many) identifiers. If a formula, the argument id
must be a
data frame.
A vector of identifiers, a list of identifiers (can be a data frame),
or a data.frame
. The identifiers can be a vector or a list of vectors. They represent
which elements of x
are to be pasted together.
When x
is a formula, then id
must be a data.frame containing the variables in
the formula.
A character scalar, default is " "
. The value used to paste together
the elements of x
.
Logical scalar, default is TRUE
. Whether to add, as names, the values of
the identifiers.
Logical scalar, default is TRUE
. Whether to sort the results according to
the identifiers.
Returns a character vector. If the argument names
is TRUE
(default), the vector will have
names equal to the values of the identifiers.
#
# let's paste together the letters of the alphabet
# first we create the identifier
id = rep(1:2, each = 13)
setNames(id, letters)
#> a b c d e f g h i j k l m n o p q r s t u v w x y z
#> 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2
# now we conditionally paste together the letters
paste_conditional(letters, id, "")
#> 1 2
#> "abcdefghijklm" "nopqrstuvwxyz"
#
# using a formula
# we create a small data set based on mtcars
base_cars = within(mtcars, carname <- row.names(mtcars))
base_cars = head(base_cars, 10)
# we use two identifiers
paste_conditional(carname ~ gear + carb, base_cars, sep = ", ")
#> gear: 3, carb: 1 gear: 3, carb: 2
#> "Hornet 4 Drive, Valiant" "Hornet Sportabout"
#> gear: 3, carb: 4 gear: 4, carb: 1
#> "Duster 360" "Datsun 710"
#> gear: 4, carb: 2 gear: 4, carb: 4
#> "Merc 240D, Merc 230" "Mazda RX4, Mazda RX4 Wag, Merc 280"