У меня есть функция R, которая принимает большое количество аргументов (18), которые я хотел бы передать в виде списка.Когда я запускаю эту функцию, так сказать, вручную, я обычно хочу использовать все значения по умолчанию, кроме одного или двух, но я также хочу запускать эту же функцию много раз с различными комбинациями элементов по умолчанию и элементов не по умолчанию, которые яхотел бы собрать программно в виде списков.
Я знаю, что мог бы просто иметь свои 18+ аргументов в качестве отдельных формалей и затем собирать их в список внутри функции, но я хотел бы иметь список по умолчанию для формальности, а затем иметьэлементы также имеют значения по умолчанию.Например:
> f <<- function(x, y = list(a=0, b=3)) {with(y, (x + a + b))}
> f(1)
[1] 4
> f(x=1, y$a = 1)
Error: unexpected '=' in "f(x=1, y$a ="
(или альтернативно)
In y$a <- 1 :
Error in eval(substitute(expr), data, enclos = parent.frame()) :
object 'a' not found
за исключением вывода с 5, а не с ошибкой.Я подозреваю, что нет никакого способа сделать это, потому что R не распознает назначения в списке как создающие значения по умолчанию, но только как создающие именованные элементы.Но может быть с формой присвоения формалей?или с помощью умного использования do.call?