Возможно, это ответит на ваш вопрос:
foo <- function(...) length(list(...))
foo2 <- function(listArg) do.call(foo, listArg)
foo() == foo2(list())
# [1] TRUE
foo(1, 2) == foo2(list(1, 2))
# [1] TRUE
foo(1, 2, 3) == foo2(list(1, 2, 3))
# [1] TRUE
Таким образом, мы не конвертируем список в многоточие, а вызываем foo
иначе, выполняя преобразование в вызове.