1

我有一个 for 循环将值填充到名为 Df 的数据框中。我的所有列都准确填充,但以下代码行不会产生我想要的值:

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 回答