Вы можете передать вектор в vararg?: Vector для sprintf

Скажем, у меня есть функция, которая принимает переменные аргументы, такие как sprintf(). Мне нужно что-то вроде:

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

но у меня есть "a" и "b" в векторе c ( "a", "b" ). Вызов, например

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

приведет к ошибке для недостаточно аргументов. Многие языки предоставляют способ "сгладить" вектор в аргумент переменной длины. Но я не могу найти синтаксис для этого в R. Есть ли способ?

Ответ 1

Вы можете использовать do.call:

vec <- c("a","b")
do.call(sprintf, c(list("%s %s"), vec))
# [1] "a b"