That gives an error when I run it. I think you want this: m <- matrix(1:3,3,3) x1 <- list(m, m+1, m+2, m+3, m+4)
out <- list() for(i in 1:4) out[[i]] <- (x1[[i]] + x1[[i+1]]) / 2 On Thu, Jan 7, 2010 at 12:28 PM, Muhammad Rahiz <muhammad.ra...@ouce.ox.ac.uk> wrote: > Dear Gabor & Henrique, > > Thanks for your suggestions on the above problem. The following is more > traditional and unfanciful but it works. Suitable for a prodige like > myself... > > m <- matrix(1:3,3,3) > x1 <- list(m, m+1, m+2, m+3, m+4) > out <- list() > for (i in 1:4){ > t[[i]] <- Reduce("+", x1[c(i:i+1)]) > } > > Muhammad > > 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: >> >> 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.