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.