У меня есть список и функция, где список содержит значения для некоторых параметров функции
param <- list(
a = 3
, b = 2
, c = 1
)
foo <- function(a, b, d) a + b + d
, и я хочу вызвать функцию со значениями из списка. Мой текущий подход -
foo_param <- param[intersect(names(param), formalArgs(foo))]
foo_param$d <- 4
do.call(foo, foo_param)
Но это кажется длинным и трудным для чтения. Есть ли более простой способ сделать это?
Да, я знаю, что могу сделать foo(param$a, param$b, d=4)
, но это становится трудно читать, если есть много аргументов и / или имя списка длинное и повторяется .
Да, я знаю, что могу переписать foo <- function(a, b, d, ...)
и отбросить аргументы в ...
, но отбрасывание аргументов - хороший способ ввести ошибки.
Ситуация возникла из-за наличия модели (определенной в виде списка) с множеством параметров и функций, принимающих только некоторые из них.