15

Let's say I have a function that takes variable arguments, such as sprintf(). I want something like:

sprintf("%s %s", "a", "b")

but I have "a" and "b" in a vector c("a", "b"). A call such as

sprintf("%s %s", c("a", "b"))

will produce an error for not enough arguments. Many languages provide a way to "flatten" a vector into a variable-length argument. But I cannot seem to find the syntax for doing so in R. Is there a way?

Tyler Rinker
  • 108,132
  • 65
  • 322
  • 519
Ara Vartanian
  • 1,563
  • 12
  • 18

1 Answers1

27

You can use do.call:

vec <- c("a","b")
do.call(sprintf, c(list("%s %s"), vec))
# [1] "a b"
Joshua Ulrich
  • 173,410
  • 32
  • 338
  • 418