apply on rows and columns?
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