Message-ID: <CAM_vjunN6ePcHoVF_ezw=_U1-XoiJPWh_LhM=wFXtaQuG8HFhg@mail.gmail.com>
Date: 2011-11-16T20:18:53Z
From: Sarah Goslee
Subject: apply on rows and columns?
In-Reply-To: <28545252.7aa27.133ae0327cd.Webtop.48@charter.net>
Hi,
On Wed, Nov 16, 2011 at 3:13 PM, <rkevinburton at charter.net> wrote:
>
> I have the following scenario:
>
>> m <- matrix(1:4, ncol=2)
>> m
> ? ? ?[,1] [,2]
> [1,] ? ?1 ? ?3
> [2,] ? ?2 ? ?4
>> apply(m, 2, sum)
> [1] 3 7
>> apply(m, 1, sum)
> [1] 4 6
>
> So I can apply to rows *or* columns. According to the documentation
> (?apply)
>
> MARGIN a vector giving the subscripts which the function will be applied
> over. E.g., for a matrix 1 indicates rows, 2 indicates columns, c(1, 2)
> indicates rows and columns. Where X has named dimnames, it can be a
> character vector selecting dimension names.
>
>
> But I get the following results:
>
>> apply(m, c(1,2), sum)
> ? ? ?[,1] [,2]
> [1,] ? ?1 ? ?3
> [2,] ? ?2 ? ?4
>
> How am I to interpret this result?
I'm pretty sure R is taking the sum of m[1,1] and putting it [1,1],
and the sum of m[1,2] and putting it in [1,2] and so on. You
instructed apply() to work on rows and columns *simultaneously*,
rather than sequentially.
apply() on c(1,2) is useful if you have a matrix that's three-dimensional,
but not so much if it's two dimensional.
What are you trying to accomplish?
Sarah
--
Sarah Goslee
http://www.functionaldiversity.org