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の単純なリターン計算です。私の友人が操作の順序の問題を提案しましたが、解決策は何ですか?

ありがとうございました!

4

1 に答える 1

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.。この場合、すべての差は 1 であり、上記のように x で除算されます。詳細については、を参照?diffしてください。

于 2012-07-09T05:23:43.030 に答える