2012-07-09 2 views
1

Df라는 데이터 프레임에 값을 채우는 for 루프가 있습니다. 내 모든 열은 정확하게 채우지 만, 다음 코드 줄은 값이 내가 원하는 것을 생산하지 않습니다느린 값 계산

for(i in 2:(dim(Df)[1])){ 
Df$dailyReturns200[i] <- (Df$index200[i+1]-Df$index200[i])/Df$index200[i] 
} 

이 P2-P1/P1의 단순 수익률 계산이다. 내 친구가 운영 문제의 문제를 제안했지만 해결책은 무엇입니까?

감사합니다.

+0

괄호를 사용 했으므로 조작 순서 문제 일 수 없습니다. 당신이 아니라면, P2 - P1을 얻을 것입니다. 왜냐하면 분단은 뺄셈 (subtraction) 전에 나오기 때문입니다,하지만 당신은 그렇게했습니다, 그래서 그렇지 않습니다. – Joshua

답변

2

재현 할 수없는 예제가 없으면 대답하기가 어렵지만 루프에서이 작업을 수행하지 않아도됩니다. 이게 당신이 원하는대로합니까? 도움말 페이지에서

#Start with a simple one column matrix 
x <- matrix(1:6, ncol = 1) 

#Compute the diffence, pad with an NA at the front, and then divide by x 
cbind(x, c(NA, diff(x))/x) 
#---- 
    [,1]  [,2] 
[1,] 1  NA 
[2,] 2 0.5000000 
[3,] 3 0.3333333 
[4,] 4 0.2500000 
[5,] 5 0.2000000 
[6,] 6 0.1666667 

diff() suitably lagged and iterated differences. 반환합니다. 이 경우, 모든 차이는 하나이며 위의 그림과 같이 x로 나뉩니다. 자세한 내용은 ?diff을 참조하십시오.