Ü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 habeVectorizeDies 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.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage