It's definitely not random! Try apply(at,3,I) to see what the marginal table is that max operates on, and you'll see where your result comes from.
On 20/09/06, Toby Muhlhofer <[EMAIL PROTECTED]> wrote: > Dear listeRs, > > I'm finding that apply() behaves strangely when used on a 3-d array. For > example: > > > at <- array(1:27,dim=c(3,3,3)) > > at > , , 1 > > [,1] [,2] [,3] > [1,] 1 4 7 > [2,] 2 5 8 > [3,] 3 6 9 > > , , 2 > > [,1] [,2] [,3] > [1,] 10 13 16 > [2,] 11 14 17 > [3,] 12 15 18 > > , , 3 > > [,1] [,2] [,3] > [1,] 19 22 25 > [2,] 20 23 26 > [3,] 21 24 27 > > > apply(at, 1, max) > [1] 25 26 27 > > If, for the MARGIN argument in apply() 1 is rows, I would have expected > as output a 3x3 matrix something like > > 7 16 25 > 8 17 16 > 9 18 27 > > Either that, or maybe the transpose of that, but a single vector seems > rather random. Especially when you go > > > apply(at, 3, max) > [1] 9 18 27 > > What is that the max of? Each submatrix? The diagonal? I'm confused. Can > anyone clarify this? > > Besides this, is there a function that will work on a 3d array, the way > I'm implying, or do I need to write an explicit loop that takes 2d > slices of my 3d array? > > Thanks! > > Toby > > ______________________________________________ > [email protected] 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. > -- ================================= David Barron Said Business School University of Oxford Park End Street Oxford OX1 1HP ______________________________________________ [email protected] 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.
