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
<[email protected]> 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: [email protected]
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
<[email protected]<mailto:[email protected]>>
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: [email protected]<mailto:[email protected]>
______________________________________________
[email protected]<mailto:[email protected]> 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.
______________________________________________
[email protected] 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.