2014-02-20 41 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