Я хочу обернуть вызов replicate()
в функцию, используя многоточие. Скажи:
fo()
имеет 2 аргумента: fo <- function(x, times) x * times
replicate()
передаст первое по имени, второе с помощью ...
.
rep_it <- function(N, ...) replicate(N, fo(x=3, ...))
Получается, что вместо передачи второго аргумента функция replicate, похоже, передает 0 значений?
fo <- function(x, times) x * times
rep_it <- function(N, ...) replicate(N, fo(x=3, ...))
rep_it(5, times = 4) # should return 5 times 3 * 4 = 12
#> [1] 0 0 0 0 0
Это, похоже, из-за многоточия! Если бы я назвал аргумент, это было бы хорошо:
rep_it2 <- function(N, times) replicate(N, fo(x=3, times))
rep_it2(5, times = 4)
#> [1] 12 12 12 12 12
Почему это происходит и как с этим справиться? Я вижу, что внутри функции replicate()
есть довольно сложный вызов: eval.parent(substitute(function(...) expr))
, но я не совсем понимаю, что там происходит ...
Спасибо!