入力パラメーターとしてfun_integrate
ベクトルを持つ関数を統合したい:vec
fun_integrate <- function(x, vec) {
y <- sum(x > vec)
dnorm(x) + y
}
#Works like a charm
fun_integrate(0, rnorm(100))
integrate(fun_integrate, upper = 3, lower = -3, vec = rnorm(100))
300.9973 with absolute error < 9.3e-07
Warning message:
In x > vec :
longer object length is not a multiple of shorter object length
私が見る限り、問題は次のとおりです。とに基づいて計算される のベクトルをintegrate
呼び出します。このベクトル化された呼び出しは、追加の引数として渡される別のベクトルでは機能しないようです。私が望むのは、内部で計算するfor eachを呼び出し、そのシングルをベクトルと比較することです。上記のコードではそれが行われないと確信しています。fun_integrate
x
upper
lower
integrate
fun_integrate
x
x
vec
私は統合ルーチンを自分で実装できることを知っています。つまり、 と の間のノードを計算lower
しupper
、各ノードの関数を個別に評価します。しかし、それは私の好ましい解決策ではありません。
また、 をチェックVectorize
しましたが、これは別の問題、つまり関数が のベクトルを受け入れないという問題に当てはまるようですx
。私の問題は、引数として追加のベクトルが必要なことです。