On Wed, 17 Jan 2007, Patrick Burns wrote:

> A logical reason for the phenomenon is that
> matrices are stored down their columns. For
> example:
>
> > matrix(1:15,5)
>     [,1] [,2] [,3]
> [1,]    1    6   11
> [2,]    2    7   12
> [3,]    3    8   13
> [4,]    4    9   14
> [5,]    5   10   15
>
> When an 'apply' across rows is done, it will be
> the values corresponding to each of the rows that
> are together.
>
> For matrices, merely transposing the result fixes
> the "problem", but it is considerably more complex
> in higher dimensional arrays.

[I don't think so, using aperm.]

> There could be a spectrum of opinion from:
>
> the original programmer was lazy and didn't adequately
> serve users
>
> to:
>
> the simpler the program the fewer bugs there will be.

Or that the vision of the original designer was not limited to matrices. 
It just so happens that in this example the replacement is a single 
dimension the same size as the single margin used.  That's atypical, and 
normally the result dimension has no connection to the margin.  The design 
is to put the result dimension first, and the first item in the 'seealso' 
list is aperm().

To my mind the only general solutions are to put the result dimension 
first or last.  I would have used last, but using first is slightly more 
efficient for the reason Pat gives.

apply() is for arrays, operating over one or more margins with a function 
returning a 'scalar', vector or array result.  Perhaps any 'lazy'-ness / 
limit of vision is not in handling array results as well as might be 
possible.

> Patrick Burns
> [EMAIL PROTECTED]
> +44 (0)20 8525 0696
> http://www.burns-stat.com
> (home of S Poetry and "A Guide for the Unwilling S User")


-- 
Brian D. Ripley,                  [EMAIL PROTECTED]
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595

______________________________________________
R-help@stat.math.ethz.ch 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.

Reply via email to