Bill Dunlap
Spotfire, TIBCO Software
wdunlap tibco.com  

> -----Original Message-----
> From: r-help-boun...@r-project.org 
> [mailto:r-help-boun...@r-project.org] On Behalf Of Peng Yu
> Sent: Thursday, December 31, 2009 2:16 PM
> To: r-h...@stat.math.ethz.ch
> Subject: [R] How x[, 'colname1'] is implemented?
> 
> I don't see where describes the implementation of '[]'.

You'd probably have to look in the source code for implementation
details like that.

> For example, if x is a matrix or a data.frame, how the lookup of
> 'colname1' is x[, 'colname1'] executed. Does R perform a lookup in the
> a hash of the colnames? Is the reference O(1) or O(n), where n is the
> second dim of x?

You can easily run timing tests in R by using system.time().
The sum of the first 2 components of its output gives the
CPU time.  E.g.,

  > f<-function(ncol){
       d<-data.frame(as.list(1:ncol))
       names(d)<-paste("Col",1:ncol)
       sum(system.time(for(i in 1:100)d['Col 1'])[1:2])
    }
  > z <- sapply(n<-2^(0:20), f)
  > z
   [1]  0.06  0.01  0.01  0.02  0.00  0.03
   [7]  0.02  0.01  0.01  0.03  0.02  0.02
  [13]  0.02  0.10  0.16  0.33  0.63  1.49
  [19]  3.22  8.35 18.91
  > plot(n, z, log="xy") # neither 0(1) nor O(ncol)

Compare the results to subscripting by number and see how fast
the column name to column number algorithm with various naming
schemes.

Bill Dunlap
Spotfire, TIBCO Software
wdunlap tibco.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.
> 

______________________________________________
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.

Reply via email to