2014-02-20 22 views
0

我试图找到沿着价格向量的日志返回,但不知道如何调用函数中的索引以在应用函数中使用。lapply需要索引的函数

下面是我使用的是什么现在:

set.seed(456) 
df1 <- data.frame(id = 1:20, col1 = round(runif(20) * 100 ,0)) 
df1[,'logDiff'] <- NA 

for(i in 2:20){ 
df1[i,'logDiff'] <- log(df1[i,'col1']/df1[i-1,'col1']) 
} 

有什么建议?

编辑:

我有一堆列,为做到这一点,想用这样的:

colsToUse <- c('co1l','col2','col3') 
lagLogDf <- as.data.frame(lapply(df1[,colsToUse], lagLogFunction(x))) 

回答

2

如你愿意,你可以向量的连续值之间的差异使用diff功能:

df1$logDiff = c(NA, diff(log(df1$col))) 

或者(举例来说,如果你的操作比累计的差异更复杂的),你可以使用headtail得到向量失踪的第一个元素和失踪的最后一个元素,并以量化的方式与他们的工作:

df1$logDiff = c(NA, log(tail(df1$col1, -1)/head(df1$col1, -1))) 
+0

+1,由43sec殴打:-) – Beasterfield