> Dear all, > > Which data structure in R can mimic hash in PERL? I'd like to set > up a lookup table, which could be accomplished by HASH if using PERL. > Which of the data structures in R is the most efficient for lookup > table? > Thanks for your help. > > Best regards, > Leon
The regular answer to this is "named arrays/vectors" or "environments" and has been given several times here on R-help. Unfortunately, everybody is applying a different terminology such as 'maps', 'hashes', 'tables' or 'dictionaries', etc., so it's difficult to search for those entries. Below I enclose a solution that I have written some month ago. It is given in pythonic language, but you can easily translate it into the corresponding Perl terms. One drawback is that one cannot use numbers as keys, only keys following the naming conventions for variable names are allowed. Hans Werner Borchers ABB Corporate Research #-- Define functions on Hash Tuples (Python alike) --------------------- def.h <- function() new.env(hash=TRUE) len.h <- function(dict) length(ls(envir=dict)) set.h <- function(key, val, dict) assign(key, val, envir=dict) get.h <- function(key, dict, default=NULL) { if (exists(key, envir=dict)) { get(key, dict) } else { default } } has_key <- function(key, dict) exists(key, envir=dict) keys.h <- function(dict) ls(envir=dict) items.h <- function(dict) as.list(dict) values.h <- function(dict, mode='character') { l <- as.list(dict) n <- length(l) if (n==0) invisible(NULL) v <- vector('character', n) for (i in 1:n) v[i] <- l[[i]] if (mode=='numeric') v <- as.numeric(v) return(v) } del.h <- function(key, dict) { if (exists(key, envir=dict)) { val <- get.h(key, dict) rm(list=c(key), envir=dict) } else { val <- NULL } invisible(val) } clear.h <- function(dict) { rm(list=keys.h(dict), envir=dict) } #----------------------------------------------------------------------- -- View this message in context: http://www.nabble.com/Which-data-structure-in-R-can-mimic-hash-in-PERL-best--tp20515707p20517058.html Sent from the R help mailing list archive at Nabble.com. ______________________________________________ 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.