통합 할 수있는 벡터 전달 방법 : integrate
통화 fun_integrate
: 최대한 멀리 볼 수내가 함수 입력 매개 변수로 벡터 <code>vec</code>을 가지고 <code>fun_integrate</code> 통합하려는 기능
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
을, 문제는 다음과 같다 벡터는 upper
및 lower
을 기반으로 계산하는 x
입니다. 이 벡터화 된 호출은 다른 벡터가 추가 인수로 전달되면 작동하지 않는 것 같습니다. 내가 원하는 것은 integrate
은 x
각각에 대해 fun_integrate
을 호출하고 내부적으로 계산하여 벡터 vec
에 해당하는 x
을 비교합니다. 위 코드가 그렇게하지 않는다고 확신합니다.
직접 통합 루틴을 구현할 수 있습니다. 즉, lower
과 upper
사이의 노드를 계산하고 각 노드의 기능을 별도로 평가할 수 있음을 알고 있습니다. 그러나 그것은 내가 선호하는 해결책이 될 수 없다.
또한 Vectorize
을 확인했지만이 문제는 다른 문제, 즉 x
에 대한 벡터를 허용하지 않는 것으로 나타납니다. 내 문제는 내가 추가 벡터를 인수로 원한다는 것이다.
나는 말할 것이다 : 좋은 지적. 어쩌면 우리 중 한 명은 빠른 사다리꼴 버전을 작성하고 대답이 300 또는 6400에 가까운 지 확인해야합니다.하지만 모든 것을 변경했습니다. :-). 이 버전이 제대로 통합되었는지 확인하기 위해 이와 같은 작업을 수행 했습니까? –
이 답변을 수정하십시오. – Roland
그래서 Vectorize가 실제로 대답이었습니다 ... 내 옆에서 체크 한 것에 대해 너무 많이 ----) 어쨌든, 고마워요! –