Jak przekazać wektor do integracji funkcji
Chcę zintegrować funkcjęfun_integrate
który ma wektorvec
jako parametr wejściowy:
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
O ile widzę, problem jest następujący:integrate
połączeniafun_integrate
dla wektorax
że oblicza na podstawieupper
ilower
. To wektoryzowane wywołanie wydaje się nie działać z innym wektorem przekazywanym jako dodatkowy argument. Chcę tegointegrate
połączeniafun_integrate
dla każdegox
że oblicza wewnętrznie i porównuje ten singielx
do wektoravec
i jestem pewien, że mój powyższy kod tego nie robi.
Wiem, że mogłem samodzielnie wdrożyć procedurę integracji, tj. Obliczyć węzły międzylower
iupper
i oceniaj funkcję na każdym węźle oddzielnie. Ale to nie byłoby moim preferowanym rozwiązaniem.
Zauważ też, że sprawdziłemVectorize
, ale wydaje się, że dotyczy to innego problemu, mianowicie, że funkcja nie akceptuje wektorax
. Mój problem polega na tym, że chcę dodatkowego wektora jako argumentu.