Thanks Dennis,

I don't think it was a problem of not feeding in a function for rollapply(), 
because I was using mean() and my co.var() function in the FUN argument. 
The key part seems to be the transformation that zoo() does to the matrix. If I 
do the same transformation to my original matrix, the rollapply() function now 
works fine.

Thanks again

David

Date: Fri, 15 Oct 2010 03:00:27 -0700
Subject: Re: [R] using apply function and storing output
From: djmu...@gmail.com
To: dasol...@hotmail.com
CC: r-help@r-project.org

Hi:

You need to give a function for rollapply() to apply :)

Here's my toy example:

d <- as.data.frame(matrix(rpois(30, 5), nrow = 10))
library(zoo)
d1 <- zoo(d)       # uses row numbers as index


# rolling means of 3 in each subseries (columns)
> rollmean(d1, 3)
        V1       V2       V3
2 3.000000 5.333333 4.333333
3 3.333333 4.333333 4.000000
4 2.666667 3.666667 3.333333
5 4.333333 3.666667 3.333333

6 5.000000 5.000000 5.000000
7 4.666667 4.666667 4.000000
8 5.666667 3.666667 4.000000
9 5.000000 3.000000 2.666667

# create new function
> cv <- function(x) sd(x)/mean(x)

# use new function in rollapply():

> rollapply(d1, 3, FUN = cv)
         V1        V2        V3
2 0.3333333 0.1082532 0.5329387
3 0.1732051 0.4803845 0.6614378
4 0.2165064 0.5677271 0.4582576
5 0.7418193 0.5677271 0.4582576
6 0.6000000 0.3464102 0.4000000

7 0.7525467 0.4948717 0.6614378
8 0.8882158 0.5677271 0.6614378
9 1.0583005 0.3333333 0.2165064

This is a simplistic example, but it should get you started.

HTH,
Dennis
On Fri, Oct 15, 2010 at 2:00 AM, David A. <dasol...@hotmail.com> wrote:






Hi Dennis and Dimitris,

thanks for your answers. I am trying the rollmean() function and also the 
rollapply() function because I also want to calculate CV for the values.
For this I created a co.var() function. I am having problems using them.


>co.var<-function(x)(
+sd(x)/mean(x)
+)


> dim(mydata)
[1] 1710  244

>xxx<-rollmean(mydata,3,by=3) 

works fine and creates a vector which I will transform into a matrix. I still 
have to find out how to store the output in my previously created 570x244 0's 
matrix in an ordered way.


but, since the examples in the help page says it´s the same, I tried

> xxx<-rollapply(mydata,3,mean,by=3)
Error in UseMethod("rollapply") : 
  no applicable method for 'rollapply' applied to an object of class 
"c('matrix', 'integer', 'numeric')"


and, with my created function...

> xxx<-rollapply(ord_raw_filt.df,3,FUN=co.var,by=3)
Error in UseMethod("rollapply") : 
  no applicable method for 'rollapply' applied to an object of class 
"c('matrix', 'integer', 'numeric')"


Can you help me with the error?

Dave

Date: Fri, 15 Oct 2010 00:45:08 -0700
Subject: Re: [R] using apply function and storing output
From: djmu...@gmail.com

To: dasol...@hotmail.com
CC: r-help@r-project.org

Hi:


Look into the rollmean() function in package zoo.

HTH,
Dennis

On Fri, Oct 15, 2010 at 12:34 AM, David A. <dasol...@hotmail.com> wrote:




Hi list,



I have a 1710x244 matrix of numerical values and I would like to calculate the 
mean of every group of three consecutive values per column to obtain a new 
matrix of 570x244.  I could get it done using a for loop but how can I do that 
using apply functions?



In addition to this, do I have to initizalize a 570x244 matrix with 0's to 
store the calculated values or can the output matrix be generated while 
calculating the mean values?



Cheers,



Dave



        [[alternative HTML version deleted]]



______________________________________________

R-help@r-project.org mailing list



PLEASE do read the posting guide http://www.R-project.org/posting-guide.html

and provide commented, minimal, self-contained, reproducible code.


                                          

                                          
        [[alternative HTML version deleted]]

______________________________________________
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.

Reply via email to