Cómo pasar el vector para integrar la función.
Quiero integrar una funciónfun_integrate
que tiene un vectorvec
como un 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
Por lo que puedo ver, el problema es el siguiente:integrate
llamadasfun_integrate
para un vector dex
que calcula en base aupper
ylower
. Esta llamada vectorizada parece no funcionar con otro vector que se pasa como un argumento adicional. Lo que quiero es queintegrate
llamadasfun_integrate
para cadax
que computa internamente y compara ese solox
al vectorvec
y estoy bastante seguro de que mi código anterior no hace eso.
Sé que podría implementar una rutina de integración yo mismo, es decir, calcular nodos entrelower
yupper
y evaluar la función en cada nodo por separado. Pero esa no sería mi solución preferida.
También tenga en cuenta que he comprobadoVectorize
, pero esto parece aplicarse a un problema diferente, a saber, que la función no acepta un vector parax
. Mi problema es que quiero un vector adicional como argumento.