edwin Sendjaja wrote:
> Hi VQ,
>
> Thank you. It works like charm. But I think Peter's code is faster. What is 
> the difference? 
>   

i think peter's code is more r-elegant, though less generic.  here's a
quick test, with not so surprising results.  gsubfn is implemented in r,
not c, and it is painfully slow in this test. i also added gabor's
suggestion.

    library(gsubfn)
    library(gtools)
    library(rbenchmark)

    n = 1000
    df = data.frame(
       a=rnorm(n),
       b = rnorm(n),
       c = rnorm(n),
       ip = replicate(n, paste(sample(255, 4), collapse='.'),
simplify=TRUE))
    benchmark(columns=c('test', 'elapsed'), replications=10, order=NULL,
       peda={
          connection = textConnection(as.character(df$ip))
          o = do.call(order, read.table(connection, sep='.'))
          close(connection)
          df[o, ] },
       waku=df[order(gsubfn(perl=TRUE,
          '[0-9]+',
          ~ sprintf('%03d', as.integer(x)),
          as.character(df$ip))), ],
       gagr=df[mixedorder(df$ip), ] )
         
    # peda 0.070
    # waku 7.070
    # gagr 4.710


vQ

______________________________________________
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