Что такое R-идиоматический способ создания списка, полученного путем применения списка функций к списку аргументов?Применение списка функций к списку аргументов
Например, если список функций и список аргументов, равное число (скажем, трех),
fncs <- list(f1, f2, f3)
args <- list(x1, x2, x3)
Я хочу, чтобы получить список значений функции,
fnc_vals <- list(f1(x1), f2(x2), f3(x3))
Другими словами, я хочу применить обобщенный вид функции base-R mapply
к спискам fncs
и args
(который применяет одну функцию к списку аргументов).
Это легко может быть сделан:
dapply <- function(args, fncs, ...) { # "diagonal" apply
lapply(seq_along(args), function(i) fncs[[i]](args[[i]], ...))
}
fnc_vals <- dapply(args, fncs)
Однако в мои глаза, это неуклюжая, потому что это было бы более естественно, если это возможно в R, без конвульсий-бежать попарно через функцию и аргументы для создания желаемого списка функциональных значений; в Python, что бы так:
fncs = [f1, f2, f3]
args = [x1, x2, x3]
fnc_vals = [f(x) for f, x in zip(fncs, args)]
Может ли это «живой» Строительство будет осуществляться в R, а?
Попробуйте «Карта» i.e. «Карта (функция (x, y) x (y), fncs, args)' – akrun