[R] Question on Reduce + rollmean
Gabor Grothendieck
ggrothendieck at gmail.com
Sat Jan 2 16:13:37 CET 2010
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.
>
More information about the R-help
mailing list