Как передать вектор, чтобы интегрировать функцию

Я хочу интегрировать функцию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, Моя проблема в том, что я хочу дополнительный вектор в качестве аргумента.

Ответы на вопрос(2)

Ваш ответ на вопрос