나는 R을 사용하여 두 가지 벡터의 값을 계산하고 다른 멋진 작업을하기 전에 함수를 작성하고 있습니다. 두 벡터는 R 및 B는, 다음의 합산에 의해 주어진다 :R 내부 함수의 합계
과 $ \ 베타 $ 상수 및가 전달되는 TS이다
을함수 및는 이벤트 발생 시간입니다. 따라서 i- 번째 이벤트가 발생하면 (t_i
) B(i)
및 R(i)
을 계산합니다.이 시간은 그 이전까지 발생한 모든 이벤트 발생 시간 t_k
을 사용하여 완료됩니다.
나는 기본적으로 둘 사이의 유일한 차이점은 지수 전에 광장에도 불구하고 두 번 모든 계산이
r <- rep(0,length(t))
for(i in 2:length(t)) {
r[i] <- sum((t[i]-t[which(t<t[i])])*exp(beta*(t[i]-t[which(t<t[i])])))
}
b <- rep(0,length(t))
for(i in 2:length(t)) {
b[i] <- sum(((t[i]-t[which(t<t[i])])^2)*exp(beta*(t[i]-t[which(t<t[i])])))
}
보다 더 효율적으로 일을 마련하고 싶습니다. 어떤 아이디어? 감사!
't'는 일반적으로 얼마나 큽니까? 너무 크지 않다면'for '루프 대신'outer'를 사용할 수 있습니다. – Roland
@ Hack-R 그들은 단지't' 벡터의 예제를 제공하지 않았기 때문에 R은 당신이't' 함수를 부분 집합하기를 원한다고 생각합니다. – Roland
어,이 루프는 추악합니다. 벡터화는 게임의 이름입니다 ... 당신은 열이 t_i와 t_k 인 데이터 프레임을 사용해야합니다. 그런 다음 차이를 계산합니다. 그런 다음 차이에 대해 ifelse를 사용하십시오. 이것은 루프없이 수행 될 수 있으며 즉시 계산되어야합니다. –