Well, as far as I remember lists (which are used like hash tables, as they associate variables with names, see http://cran.r-project.org/doc/manuals/R-lang.html#List-objec...), implement indexing as an O(n) operation. Only after they reach a certain size are they converted to a hash table.
Everything is pass by value with some cases being marked as 'safe', i. e. if you know beforehand the variable won't be changed it's not copied to save time.
The reason for this is that the project was designed by people who were primarily statisticians, and the most glaring performance problems were later fixed by hacks and 'special cases'.
Disclaimer: Most of this I know second hand from a coworker who's an author of many R packages. I worked with R's interface to C and it wasn't a pleasant experience.
Everything is pass by value with some cases being marked as 'safe', i. e. if you know beforehand the variable won't be changed it's not copied to save time.
The reason for this is that the project was designed by people who were primarily statisticians, and the most glaring performance problems were later fixed by hacks and 'special cases'.
Disclaimer: Most of this I know second hand from a coworker who's an author of many R packages. I worked with R's interface to C and it wasn't a pleasant experience.