beginner Q: hashtable or dictionary?
On 1/30/2006 9:55 AM, Seth Falcon wrote:
On 1/29/06, context grey <mobygeek at yahoo.com> wrote:
Hi, Is there something like a hashtable or (python) dictionary in R/Splus?
On 29 Jan 2006, jholtman at gmail.com wrote:
use a 'list':
Most of the time, a list will be what you want, but it has some
important differences from a Python dictionary. In particular, one
can end up with duplicate keys. Here is an example:
h <- list()
h[["foo"]] <- 1
h[[2]] <- 2
names(h) <- rep("foo", 2)
h
$foo
[1] 1
$foo
[1] 2
h[["foo"]]
[1] 1
'environments' may be what you are looking for, see help for new.env().
h <- new.env(hash=TRUE)
An important thing to keep in mind with environments, however, is that
they are an exception to the pass by value semantics of the language.
Environments are not copied when passed as function args. This has
its uses, but can be confusing.
Both lists and environments have other oddities, too. For example, "mean" would be found in your environment above by functions like get(), since the base environment is its parent; "f" would be found in your list, since partial name matching is used in lists. You can avoid the parent problem in R 2.2.x+ by setting the parent explicitly to emptyenv(). Duncan Murdoch