Übergabe eines Vektors zur Integration der Funktion
Ich möchte eine Funktion integrierenfun_integrate
das hat einen vektorvec
als Eingabeparameter:
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
Soweit ich sehen kann, ist das Problem das folgende:integrate
Anrufefun_integrate
für einen Vektor vonx
dass es berechnet basierend aufupper
undlower
. Dieser vektorisierte Aufruf scheint nicht zu funktionieren, wenn ein anderer Vektor als zusätzliches Argument übergeben wird. Was ich will, ist dasintegrate
Anrufefun_integrate
für jedenx
dass es intern berechnet und diese einzelne vergleichtx
zum Vektorvec
und ich bin mir ziemlich sicher, dass mein obiger Code das nicht tut.
Ich weiß, dass ich selbst eine Integrationsroutine implementieren könnte, d. H. Knoten zwischen diesen berechnenlower
undupper
und bewerten Sie die Funktion auf jedem Knoten separat. Aber das wäre nicht meine bevorzugte Lösung.
Beachten Sie auch, dass ich überprüft habeVectorize
Dies scheint jedoch auf ein anderes Problem zuzutreffen, nämlich dass die Funktion keinen Vektor für akzeptiertx
. Mein Problem ist, dass ich einen zusätzlichen Vektor als Argument haben möchte.