[R] Matrix subscripting to wrap around from end to start of row
David Winsemius
dwinsemius at comcast.net
Wed Oct 13 22:23:28 CEST 2010
On Oct 13, 2010, at 4:10 PM, Alisa Wade 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)
> start=5; end=1; year.avg = apply(month.data[, c(start,end)], 1, mean)
> year.avg
[1] 12.5 6.0
> 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
David Winsemius, MD
West Hartford, CT
More information about the R-help
mailing list