Here is a variation which also uses head and tail: mapply(function(x, y) (x + y)/2, tail(x, -1), head(x, -1), SIMPLIFY = FALSE)
On Mon, Jan 4, 2010 at 12:37 PM, Henrique Dallazuanna <www...@gmail.com> wrote: > For this example try this: > > lapply(lapply(list('head', 'tail'), do.call, list(x, n = -1)), > function(x)Reduce('+', x)/2) > > > On Mon, Jan 4, 2010 at 1:54 PM, Muhammad Rahiz > <muhammad.ra...@ouce.ox.ac.uk> wrote: >> Thanks Gabor, >> >> It works alright. But is there alternative ways to perform rollmean apart >> from permutating the data? >> Possibly combining the Reduce and rollmean functions? >> >> The easiest but traditional way is >> >>> (x[[1]]+x[[2]]) / 2 >>> (x[[2]]+x[[3]]) / 2 >> >> >> Muhammad Rahiz | Doctoral Student in Regional Climate Modeling >> >> Climate Research Laboratory, School of Geography & the Environment >> Oxford University Centre for the Environment >> South Parks Road, Oxford, OX1 3QY, United Kingdom Tel: +44 (0)1865-285194 >> Mobile: +44 (0)7854-625974 >> Email: muhammad.ra...@ouce.ox.ac.uk >> >> >> >> >> >> >> Gabor Grothendieck wrote: >>> >>> Try apply: >>> >>> library(zoo) # rollmean >>> >>> # test data >>> m <- matrix(1:3, 3, 3) >>> x <- list(m, m+3, m+6) >>> >>> # convert to array >>> a <- array(unlist(x), c(3, 3, 3)); a >>> >>> # apply rollmean and permute to desired form >>> aa <- apply(a, 1:2, rollmean, k = 2) >>> aperm(aa, c(2, 3, 1)) >>> >>> The last line outputs: >>> >>> >>>> >>>> aperm(aa, c(2, 3, 1)) >>>> >>> >>> , , 1 >>> >>> [,1] [,2] [,3] >>> [1,] 2.5 2.5 2.5 >>> [2,] 3.5 3.5 3.5 >>> [3,] 4.5 4.5 4.5 >>> >>> , , 2 >>> >>> [,1] [,2] [,3] >>> [1,] 5.5 5.5 5.5 >>> [2,] 6.5 6.5 6.5 >>> [3,] 7.5 7.5 7.5 >>> >>> >>> On Sat, Jan 2, 2010 at 10:00 AM, Muhammad Rahiz >>> <muhammad.ra...@ouce.ox.ac.uk> wrote: >>> >>>> >>>> Let me rephrase; >>>> >>>> Given x as >>>> >>>> >>>>> >>>>> x >>>>> >>>> >>>> [[1]] >>>> V1 V2 V3 >>>> [1,] 1 1 1 >>>> [2,] 2 2 2 >>>> [3,] 3 3 3 >>>> >>>> [[2]] >>>> V1 V2 V3 >>>> [1,] 4 4 4 >>>> [2,] 5 5 5 >>>> [3,] 6 6 6 >>>> >>>> [[3]] >>>> V1 V2 V3 >>>> [1,] 7 7 7 >>>> [2,] 8 8 8 >>>> [3,] 9 9 9 >>>> >>>> I'd like to calculate the moving average (interval = 2) i.e. >>>> >>>> ( x[[1]] + x[[2]] ) / 2 >>>> ( x[[2]] + x[[3]] ) / 2 >>>> ... and so on. >>>> >>>> The desired output will return >>>> >>>> 2.5 2.5 2.5 >>>> 3.5 3.5 3.5 >>>> 4.5 4.5 4.5 >>>> >>>> 5.5 5.5 5.5 >>>> 6.5 6.5 6.5 >>>> 7.5 7.5 7.5 >>>> >>>> >>>> >>>> >>>> Muhammad Rahiz | Doctoral Student in Regional Climate Modeling >>>> Climate Research Laboratory, School of Geography & the Environment >>>> Oxford University Centre for the Environment, University of Oxford >>>> South Parks Road, Oxford, OX1 3QY, United Kingdom >>>> Tel: +44 (0)1865-285194 Mobile: +44 (0)7854-625974 >>>> Email: muhammad.ra...@ouce.ox.ac.uk >>>> >>>> >>>> >>>> milton ruser wrote: >>>> >>>>> >>>>> Dear M.Rahiz, >>>>> >>>>> Unfortunatelly I can't reproduce your example. >>>>> PLEASE do read the posting guide >>>>> >>>>> http://www.R-project.org/posting-guide.html<http://www.r-project.org/posting-guide.html> >>>>> >>>>> bests >>>>> >>>>> milton >>>>> On Sat, Jan 2, 2010 at 9:26 AM, Muhammad Rahiz >>>>> <muhammad.ra...@ouce.ox.ac.uk<mailto:muhammad.ra...@ouce.ox.ac.uk>> >>>>> wrote: >>>>> Hello useRs, >>>>> >>>>> I'd like to perform a moving average on the dataset, xx. I've tried >>>>> combining the functions Reduce and rollmean but it didn't work. >>>>> >>>>> >>>>> >>>>>> >>>>>> r <- function(n) rollmean(n, 2) # where 2 = averaging interval >>>>>> output < - Reduce("r", x) >>>>>> >>>>>> >>>>> >>>>> Error in f(init, x[[i]]) : unused argument(s) (x[[i]]) >>>>> >>>>> Is there anything wrong with the code in the first place? >>>>> >>>>> where >>>>> >>>>> >>>>>> >>>>>> x >>>>>> >>>>>> >>>>> >>>>> [[1]] >>>>> V1 V2 V3 >>>>> [1,] 1 1 1 >>>>> [2,] 2 2 2 >>>>> [3,] 3 3 3 >>>>> >>>>> [[2]] >>>>> V1 V2 V3 >>>>> [1,] 4 4 4 >>>>> [2,] 5 5 5 >>>>> [3,] 6 6 6 >>>>> >>>>> [[3]] >>>>> V1 V2 V3 >>>>> [1,] 7 7 7 >>>>> [2,] 8 8 8 >>>>> [3,] 9 9 9 >>>>> >>>>> The moving average is to be performed on >>>>> >>>>> 1,4,7 = (1+4)/2 , (4+7)/2 >>>>> 2,5,8 = .. >>>>> 3,6,9 = .. >>>>> >>>>> Thanks >>>>> >>>>> Muhammad >>>>> >>>>> -- >>>>> Muhammad Rahiz | Doctoral Student in Regional Climate Modeling >>>>> Climate Research Laboratory, School of Geography & the Environment >>>>> Oxford University Centre for the Environment, University of Oxford >>>>> South Parks Road, Oxford, OX1 3QY, United Kingdom >>>>> Tel: +44 (0)1865-285194 Mobile: +44 (0)7854-625974 >>>>> Email: muhammad.ra...@ouce.ox.ac.uk<mailto:muhammad.ra...@ouce.ox.ac.uk> >>>>> >>>>> ______________________________________________ >>>>> R-help@r-project.org<mailto: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<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. >>>> >>>> >> >> ______________________________________________ >> 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. >> > > > > -- > Henrique Dallazuanna > Curitiba-Paraná-Brasil > 25° 25' 40" S 49° 16' 22" O > > ______________________________________________ > 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.