On Thu, Apr 28, 2011 at 10:13 PM, Gabor Grothendieck <ggrothendi...@gmail.com> wrote: > On Thu, Apr 28, 2011 at 4:49 PM, mathijsdevaan <mathijsdev...@gmail.com> > wrote: >> Thanks, but it did not really improve the speed. Why is it that when I change >> the layout of the matrix (which does not give the required results), the >> speed increases tremendously? So: >> >> library(reshape2) >> library(zoo) >> z <- read.zoo(DF, split = 3, index = 2, FUN = identity) # Split on 3 and >> index on 2 instead of vice versa >> sum.na <- function(x) if (any(!is.na(x))) sum(x, na.rm = TRUE) else NA >> r <- rollapply(z, 3, sum.na, align = "right", partial = TRUE) >> >> or >> >> mm <- melt(DF, id = c("B", "C")) >> aa <- acast(mm, B ~ C + variable, FUN = sum) # B ~ C instead of C ~ B >> sum.na <- function(x) if (any(!is.na(x))) sum(x, na.rm = TRUE) else NA >> r <- rollapply(aa, 3, sum.na, align = "right", partial = TRUE) >> > > > For me it makes little difference: > >> system.time(for(i in 1:100) read.zoo(DF, split = 3, index = 2, FUN = >> identity)) > user system elapsed > 1.72 0.00 1.71 >> system.time(for(i in 1:100) read.zoo(DF, split = 2, index = 3, FUN = >> identity)) > user system elapsed > 1.75 0.00 1.74
and here it is with rollapply included: > system.time(for(i in 1:100) { read.zoo(DF, split = 3, index = 2, FUN = > identity) + r <- rollapply(z, 3, sum.na, align = "right", partial = TRUE)}) user system elapsed 14.74 0.00 14.76 . > system.time(for(i in 1:100) {read.zoo(DF, split = 2, index = 3, FUN = > identity) + r <- rollapply(z, 3, sum.na, align = "right", partial = TRUE)}) user system elapsed 14.72 0.00 14.74 -- Statistics & Software Consulting GKX Group, GKX Associates Inc. tel: 1-877-GKX-GROUP email: ggrothendieck at gmail.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.