我有一个 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 的简单回报计算。我的一个朋友提出了一个操作顺序问题,但解决方案是什么?
谢谢!
没有可重复的示例很难回答,但您根本不需要循环执行此操作。这是做你想做的吗?
#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
更多详细信息,请参阅。