Предполагая, что ваш data.frame генерируется, как показано ниже
x1 <- c(5,10,12,14,8)
x2 <- c(13,5,4,3,1)
x3 <- c(4,2,1,8,10)
df <- as.data.frame(rbind(x1,x2,x3))
rownames(df) <- as.character(c(1,2,3))
colnames(df) <- as.character(c(2004,2006,2008,2010,2012))
, тогда вы можете использовать следующее для вашей цели:
I <- function(x, delta = 15/16, g0 = 16/15, l0 = 1) {
dx <- diff(x)
sum(sapply(seq_along(dx), function(k) dx[k]*delta**(length(dx)-k)*ifelse(dx[k]>0, g0,l0)))
}
r <- apply(df, 1, I)
, где I
- это функция, как вы указали