On Thu, Apr 14, 2011 at 06:44:53PM +1200, Worik R wrote: > To improve the efficiency of a process I am writing I would like to cache > results. So I would like a data structure like a hash table. > > So if I call Z <- f(Y) I can cache Z associated with Y: CACHE[Y] <- Z > > I am stumped. I expected to be able to use a list for this but I cannot > figure how....
If y is an integer, factor or string you could try something along these lines: cache <- list() y <- 12 cache[[as.character(y)]] <- sqrt(y) y<-98 cache[[as.character(y)]] <- sqrt(y) cache $`12` [1] 3.464102 $`98` [1] 9.899495 Of course this can get you in trouble if y is a floating point number because of the issues with "identity" of such numbers, as discussed in ?all.equal and FAQ 7.31 "Why doesn't R think these numbers are equal?". cu Philipp -- Dr. Philipp Pagel Lehrstuhl für Genomorientierte Bioinformatik Technische Universität München Wissenschaftszentrum Weihenstephan Maximus-von-Imhof-Forum 3 85354 Freising, Germany http://webclu.bio.wzw.tum.de/~pagel ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.