Как передать вектор, чтобы интегрировать функцию
Я хочу интегрировать функцию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
звонкиfun_integrate
для вектораx
что он вычисляет на основеupper
а такжеlower
, Этот векторизованный вызов не работает с другим вектором, передаваемым в качестве дополнительного аргумента. Что я хочу этоintegrate
звонкиfun_integrate
для каждогоx
что он вычисляет внутри и сравнивает этот единственныйx
к векторуvec
и я уверен, что мой код выше этого не делает.
Я знаю, что мог бы сам реализовать процедуру интеграции, то есть вычислить узлы междуlower
а такжеupper
и оцените функцию на каждом узле отдельно. Но это не будет моим предпочтительным решением.
Также обратите внимание, что я проверилVectorize
, но это, кажется, применимо к другой проблеме, а именно, что функция не принимает вектор дляx
, Моя проблема в том, что я хочу дополнительный вектор в качестве аргумента.