我有一个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的简单回归计算。我的一位朋友提出了操作顺序问题,但解决方案是什么?
谢谢!
答案 0 :(得分: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
。