paths <- function(fileName,lookback) { data <- read.csv(fileName) names(data) <- c("Date","Time","Open","High","Low","Close","Volume") oneRowShift <- data$Close[1:(nrow(data)-1)] data <- cbind(data[2:nrow(data),],oneRowShift) absChange <- abs(data$Close-data$oneRowShift) data <- cbind(data,absChange) walk <- sapply(lookback:nrow(data),pathDistance,lookback,data$absChange) lookbackShift <- data$Close[1:(nrow(data)-lookback+1)] data <- cbind(data[lookback:nrow(data),],walk,lookbackShift) distance <- abs(data$Close-data$lookbackShift) ratio <- abs(distance/data$walk) data <- cbind(data,distance,ratio) data } pathDistance <- function(index,lookback,column) { start <- index-lookback+1 mySum <- sum(column[start:index]) mySum } #say you use the function gbpjpy <- paths("GBPJPY60.csv",50) #you now need to calculate the mean of the ratio column, which is mean(gbpjpy$ratio)