Question on Reduce + rollmean
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.rahiz at 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.rahiz at 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 <wwwhsd at 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.rahiz at 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.rahiz at 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.rahiz at 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.rahiz at 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.rahiz at ouce.ox.ac.uk<mailto:muhammad.rahiz at 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.rahiz at ouce.ox.ac.uk<mailto:muhammad.rahiz at ouce.ox.ac.uk> ______________________________________________ R-help at r-project.org<mailto: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<http://www.r-project.org/posting-guide.html> and provide commented, minimal, self-contained, reproducible code.
______________________________________________ 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.
______________________________________________ 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.
-- Henrique Dallazuanna Curitiba-Paran?-Brasil 25? 25' 40" S 49? 16' 22" O
______________________________________________ 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.