Tamas K Papp <[EMAIL PROTECTED]> writes: > On Wed, Dec 13, 2006 at 03:05:46PM -0800, Robert Gentleman wrote: > >> e1 = new.env(hash=TRUE) >> >> e1[["1"]] = whateveryouwant >> >> ie. just transform to characters, but I don't see why you want to do >> that - surely there are more informative names to be used - > > Because they are derivatives, and best indexed by numbers. I wrote an > example to demonstrate what I think the solution is (for memoizing > powers of numbers). It works, but I am not an experienced programmer: > can you please look at it to check that I do things right and do not > abuse any feature of R? > > ## memoize powers of integers > > createpowerlist <- function(n) { > list(n=n,env=new.env(hash=TRUE))
I would do: new.env(hash=TRUE, parent=emptyenv()) > } > > getpower <- function(powerlist,i) { > iname <- as.character(i) > if (exists(iname,powerlist$env)) > get(iname,powerlist$env) > else { > res <- i^powerlist$n # result > assign(iname,res,powerlist$env) > res That's fine, but you could do: get(iname, powerlist$env) ==> powerlist$env[[iname]] assing(iname, res, powerlist$env) ==> powerlist$env[[iname]] <- res Perhaps that's easier to read since is familiar to those who have used lists? ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel