関数のリストを引数のリストに適用することによって得られたリストを作成するR-idiomaticな方法はありますか?例えば引数のリストに関数のリストを適用する
、私は関数の値の一覧を取得したい、
fnc_vals <- list(f1(x1), f2(x2), f3(x3))
を
fncs <- list(f1, f2, f3)
args <- list(x1, x2, x3)
を数(たとえば、3)で同等の機能と、リストの引数のリストを、与えられました
つまり、base-R関数mapply
の一般化された形式をリストfncs
とargs
(引数のリストに1つの関数を適用する)に適用したいと考えています。
これは簡単に行うことができますされています。それはRで、より自然であれば可能になるので
dapply <- function(args, fncs, ...) { # "diagonal" apply
lapply(seq_along(args), function(i) fncs[[i]](args[[i]], ...))
}
fnc_vals <- dapply(args, fncs)
はしかし、私の目に、これは、不器用で、ねじれ-する機能を通じてペアごとを実行することなく、かつ所望の関数値リストを生成するための引数。 でこのように行くだろうPythonの、:
fncs = [f1, f2, f3]
args = [x1, x2, x3]
fnc_vals = [f(x) for f, x in zip(fncs, args)]
は、この「ジッピー」建設は、同様に、Rで実装することができますか?
「地図」、つまり「Map(function(x、y)x(y)、fncs、args)」を試してください。 – akrun