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?
______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel