# [R] curious about dimension of 'apply' output when MARGIN=1

Patrick Burns pburns at pburns.seanet.com
Wed Jan 17 11:45:14 CET 2007

```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.

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.

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

Gabor Grothendieck wrote:

>The reshape package has an idempotent apply, iapply:
>
>
>
>>library(reshape)
>>iapply(M,1,function(row) row+c(1,2))
>>
>>
>     [,1] [,2]
>[1,]    2    6
>[2,]    3    7
>[3,]    4    8
>
>On 1/16/07, Benjamin Tyner <btyner at stat.purdue.edu> wrote:
>
>
>>Reading the documentation for 'apply', I understand the following is
>>working exactly as documented:
>>
>> > M<-matrix(1:6,ncol=2)
>> > M
>>    [,1] [,2]
>>[1,]    1    4
>>[2,]    2    5
>>[3,]    3    6
>> > apply(M,2,function(column) column+c(1,2,3))
>>    [,1] [,2]
>>[1,]    2    5
>>[2,]    4    7
>>[3,]    6    9
>> > apply(M,1,function(row) row+c(1,2))
>>    [,1] [,2] [,3]
>>[1,]    2    3    4
>>[2,]    6    7    8
>>
>>I'm not proposing any changes or extra arguments to 'apply'. Rather, I'm
>>wondering what is the benefit for (or rationale behind) this somewhat
>>unintuitive behavior in the case that MARGIN=1.
>>
>>Thanks,
>>Ben
>>
>>______________________________________________
>>R-help at stat.math.ethz.ch mailing list
>>https://stat.ethz.ch/mailman/listinfo/r-help
>>and provide commented, minimal, self-contained, reproducible code.
>>
>>
>>
>
>______________________________________________
>R-help at stat.math.ethz.ch mailing list
>https://stat.ethz.ch/mailman/listinfo/r-help