Como passar vetor para integrar a função
Eu quero integrar uma funçãofun_integrate
que tem um vetorvec
como um parâmetro de entrada:
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
Tanto quanto eu posso ver, o problema é o seguinte:integrate
chamadasfun_integrate
para um vetor dex
que calcula com base emupper
elower
. Esta chamada vetorizada parece não funcionar com outro vetor sendo passado como um argumento adicional. O que eu quero é queintegrate
chamadasfun_integrate
para cadax
que calcula internamente e compara esse singlex
para o vetorvec
e tenho certeza que meu código acima não faz isso.
Eu sei que eu poderia implementar uma rotina de integração, ou seja, calcular nós entrelower
eupper
e avaliar a função em cada nó separadamente. Mas essa não seria a minha solução preferida.
Observe também que eu verifiqueiVectorize
, mas isso parece se aplicar a um problema diferente, ou seja, que a função não aceita um vetor parax
. Meu problema é que eu quero um vetor adicional como argumento.