[R] Quickest way to access data.frame?

yoooooo magno_yu at ml.com
Wed Apr 2 16:57:32 CEST 2008

Hi, I have tried search around this forum for the best way to access a
data.frame.. i got the feeling that "no partial match" is the way to make it
fast.... so I convert everything to factor.. but I'm still not 100% sure if
the following code will do it... is this the fastest way to do something
foreach (ID, ID2) pair? Thanks!

data <- data.frame(ID = floor(runif(n = 40000, min=0, max=20)),
           ID2 = floor(runif(n = 40000, min=0, max=1000)), 
           DATA1 = rnorm(n = 40000))
data$ID <- as.factor(data$ID)
data$ID2 <- as.factor(data$ID2)
res <- lapply(attr(data$ID, "levels"), function(x, data){
  data <- data[which(data$ID == x), ]
  res <- structure(unlist(lapply(attr(data$ID2, "levels"), function(x,
     data <- data[which(data$ID2 == x), ]
     if (nrow(data) == 0){
     data[nrow(data), "DATA1"]
  }, data = data)), names=as.character(attr(data$ID2, "levels")))
  res <- mean(res, na.rm=TRUE)
}, data = data)

View this message in context: http://www.nabble.com/Quickest-way-to-access-data.frame--tp16447176p16447176.html
Sent from the R help mailing list archive at Nabble.com.

More information about the R-help mailing list