Was ist der R-idiomatische Weg zum Erstellen einer Liste durch Anwenden einer Liste von Funktionen auf eine Liste von Argumenten?Anwenden einer Liste von Funktionen auf eine Liste von Argumenten
Zum Beispiel gegeben eine Liste von Funktionen und eine Liste Argumente, in gleicher Anzahl (zum Beispiel drei),
fncs <- list(f1, f2, f3)
args <- list(x1, x2, x3)
Ich möchte die Liste der Funktionswerte erhalten,
fnc_vals <- list(f1(x1), f2(x2), f3(x3))
Mit anderen Worten, ich möchte eine verallgemeinerte Form der Basis-R-Funktion mapply
auf die Listen fncs
und args
anwenden (die eine einzelne Funktion auf eine Liste von Argumenten anwendet).
Dies ist leicht getan werden kann:
dapply <- function(args, fncs, ...) { # "diagonal" apply
lapply(seq_along(args), function(i) fncs[[i]](args[[i]], ...))
}
fnc_vals <- dapply(args, fncs)
jedoch meine Augen zu, dann ist dies ungeschickt, weil es natürlich, wenn möglich in R sein würde, ohne-Verrenkungen paarweise durch die Funktionen ausführen und Argumente zum Erzeugen der gewünschten Funktionswertliste; in Python, das so gehen würde:
fncs = [f1, f2, f3]
args = [x1, x2, x3]
fnc_vals = [f(x) for f, x in zip(fncs, args)]
Kann diese „flink“ Konstruktion in R implementiert werden, wie gut?
Versuchen Sie mit 'Map' z. B.' Map (Funktion (x, y) x (y), fncs, args) ' – akrun