[R] maximum over one dimension of a 3-dimensional array

David Winsemius dwinsemius at comcast.net
Thu May 28 17:47:30 CEST 2009


On May 28, 2009, at 11:25 AM, eric lee wrote:

> Hi,
>
> I'm running R 2.7.2 on windows XP.  I'd like to find the maximum of a
> 3-d array over it's third index to create a 2-d array.  For example:
>
>> x <- array(c(1,2,3,10,11,12,3:8),c(2,3,2))
>> x
> , , 1
>
>     [,1] [,2] [,3]
> [1,]    1    3   11
> [2,]    2   10   12
>
> , , 2
>
>     [,1] [,2] [,3]
> [1,]    3    5    7
> [2,]    4    6    8
>
>> x1 <- x[,,1]
>> x2 <- x[,,2]
>> pmax(x1,x2)
>     [,1] [,2] [,3]
> [1,]    3    5   11
> [2,]    4   10   12

Consider:

 > apply(x, 1:2, max)
      [,1] [,2] [,3]
[1,]    3    5   11
[2,]    4   10   12

or

 > apply(x, c(1,2), max)  # not necessarily adjacent dimensions
      [,1] [,2] [,3]
[1,]    3    5   11
[2,]    4   10   12

>

>
> Is there a pre-defined function that I can use to do this without
> using a for-loop?  Also, the third index can be long and of variable
> length, so I don't want to explicitly write out x1, x2,...  Thanks in
> advance for your help.

David Winsemius, MD
Heritage Laboratories
West Hartford, CT




More information about the R-help mailing list