为需要索引的函数提供lapply

时间:2014-02-20 16:52:47

标签: r indexing apply

我正在尝试沿着价格向量找到日志返回但不确定如何在函数内调用索引以在apply函数中使用。

以下是我现在正在使用的内容:

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)))

1 个答案:

答案 0 :(得分:2)

如果您想要矢量连续值之间的差异,可以使用diff函数:

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

或者(例如,如果您的操作比累积差异更复杂),您可以使用headtail来使向量缺少第一个元素并丢失最后一个元素,并使用它们采用矢量化方式:

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