# Josua Kugler, Christian Merten mem_near <- function(f_in) { memo <- list(input=c(), value=c()) function(x, nearest) { if (!nearest) { memo$input <<- c(memo$input, x) y <- f_in(x) memo$value <<- c(memo$value, y) return(y) } memo$value[apply(outer(memo$input, x, function(a, b) abs(a-b)), 2, which.min)] } }