Hi:

This isn't particularly elegant, but I think it works:

# The function to be applied:
f <- function(x, idx) {
    n <- length(x)
    if(idx[1] < idx[2]) {idx <- seq(idx[1], idx[2])
    } else { idx <- c(seq(idx[1], n), seq(1, idx[2])) }
    mean(x[idx])
   }

# tests
> month.data = matrix(c(3,4,6,8,12,90,5,14,22, 8), nrow = 2, ncol=5)
> month.data
     [,1] [,2] [,3] [,4] [,5]
[1,]    3    6   12    5   22
[2,]    4    8   90   14    8
> apply(month.data, 1, f, idx = c(1, 3))
[1]  7 34
> apply(month.data, 1, f, idx = c(3, 1))
[1] 10.5 29.0
> apply(month.data, 1, f, idx = c(5, 2))
[1] 10.333333  6.666667


HTH,
Dennis

On Wed, Oct 13, 2010 at 1:10 PM, Alisa Wade <alis...@gmail.com> wrote:

> Perhaps it is just that I don't even know the correct term to search for,
> but I can find nothing that explains how to wrap around from the end to a
> start of a row in a matrix.
>
> For example, you have a matrix of 2 years of data, where rows are years,
> and
> columns are months.
> month.data = matrix(c(3,4,6,8,12,90,5,14,22, 8), nrow = 2, ncol=5)
>
> I would like to take the average of months 5:1  for each year (for row 1
> =12.5). However, I am passing the start month (5) and the end month (1) as
> variables.
>
> I would like to do something like
>
> year.avg = apply(month.data[, start.month:end.month], MARGIN=1, mean)
>
> But that gives me the average of months 1:5. (for row 1 =9.6)
>
> I know I could use:
> apply(month.data[, c(1,5)], 1, mean)
> but I don't know how to pass start.month, end.month into that format that
> because paste or sprintf forces them to strings, which are not accepted in
> a
> subscript.
>
> I have the feeling I am unaware of some obvious trick.
> Any ideas would be greatly appreciated!
>
> *****************************************************
> Alisa A. Wade
> Postdoctoral Center Associate
> National Center for Ecological Analysis and Synthesis
> w...@nceas.ucsb.edu
> (406) 529-9722
> home email: alis...@gmail.com
>
>        [[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.
>

        [[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