[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