R 需要索引的函数的lappy

R 需要索引的函数的lappy,r,indexing,apply,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']) } set.seed(456

我试图沿着价格向量找到对数回报,但不确定如何在函数中调用索引以用于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'])
}
set.seed(456)

df1当需要向量连续值之间的差值时,可以使用
diff
函数:

df1$logDiff = c(NA, diff(log(df1$col)))
或者(例如,如果您的操作比累积差异更复杂),您可以使用
head
tail
获取缺少第一个元素和最后一个元素的向量,并以向量化的方式使用它们:

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