の使用に関して質問がありますmapply
。
次の 2 つのケースを考えてみましょ う。mapply を使用して、ベクター k を要素単位で変換し、ベクター trans に格納されている関数を使用します。これは機能します(この質問に関連)
ケース 2では、似たようなことをしたいのですが、追加の関数引数 (ここでは a に格納されています) が必要です。ただし、n 個の関数引数が必要な場合があります。この例で得られるのは、期待される結果が対角線上にある 3x3 行列です。対角線の計算された出力のみが必要です。どのように?
k <- seq(1:3)
# Case 1 -----------------------------------------------------------------------
trans <- c(function(x) x, function(x) 1/x, function(x) x^2)
# transform vektors elementwise with functions in a "transform" vektor
ktrans <- mapply(function(f, x) f(x), trans, k)
# 2 -----------------------------------------------------------------------
k <- seq(1:3)
a <- rep(2,3)
transa <- c(function(x,a) x*a, function(x,a) 1/x*a, function(x,a) x^2*a)
ktransa <- mapply(function(f, x,a) f(x,a), transa, MoreArgs= list(x = k, a= a))
> diag(ktransa)
[1] 2 1 18