[R] own function: computing time

Rui Barradas ruipbarradas at sapo.pt
Wed Oct 10 14:03:19 CEST 2012


Hello,

'outer' is a bad name for a function, it's already an R one. See ?outer.
As for your algorithm, it runs quadratically in the length of x and y so 
you should expect a quadratic time behavior. What are you trying to do? 
Your code gets max(x), max(y) and some other points near those. Can you 
rethink what goes on before the algorithm?

Also, you're timing everything, it would be better to just

system.time({j <- apply(xy, 1, outer)})

Hope this helps,

Rui Barradas
Em 10-10-2012 11:15, tonja.krueger at web.de escreveu:
> Hi all,
>
> I wrote a function that actually does what I want it to do, but it tends to be very slow for large amount of data. On my computer it takes 5.37 seconds for 16000 data points and 21.95 seconds for 32000 data points. As my real data consists of 18000000 data points it would take ages to use the function as it is now.
> Could someone help me to speed up the calculation?
>
> Thank you, Tonja
>
> system.time({
> x <- runif(32000)
> y <- runif(32000)
>
> xy <- cbind(x,y)
>
> outer <- function(z){
> !any(x > z[1] & y > z[2])}
> j <- apply(xy,1, outer)
>
> plot(x,y)
> points(x[j],y[j],col="green")
>
> })
>
> ______________________________________________
> R-help at 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.




More information about the R-help mailing list