Я хочу вызвать функцию R, которая использует аргумент ...
(многоточие) для поддержки неопределенного количества аргументов:
f <- function(x, ...) {
dot.args <- list(...)
paste(names(dot.args), dot.args, sep = "=", collapse = ", ")
}
Я могу вызвать эту функцию, передав фактические аргументы, предопределенные во время разработки, например. г.:
> f(1, a = 1, b = 2)
[1] "a=1, b=2"
Как я могу передать фактические аргументы для ...
, которые я знаю только во время выполнения (например, ввод от пользователя)?
# let's assume the user input was "a = 1" and "b = 2"
# ------
# If the user input was converted into a vector:
> f(1, c(a = 1, b = 2))
[1] "=c(1, 2)" # wrong result!
# If the user input was converted into a list:
> f(1, list(a = 1, b = 2))
[1] "=list(a = 1, b = 2)" # wrong result!
Ожидаемый результат динамически сгенерированного вызова f
должен быть:
[1] "a=1, b=2"
Я нашел некоторые существующие вопросы о том, как использовать ...
, но они не ответили на мой вопрос:
Как использовать функцию многоточия в R при написании собственной функции?
Использование точки / периода в функциях R
Передать ... аргумент другой функции
Могу ли я удалить элемент из ... (точка-точка-точка) и передать его дальше?