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? Thank you. Kevin [[alternative HTML version deleted]]
It's the same as what you began with -- and that's because you broke it down by columns and rows and took the sum of everything that resulted. I.e., sum(m[1,1]) sum(m[2,1]) sum(m[1,2]) sum(m[2,2]) and put them back together. Michael 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? > > Thank you. > > Kevin > > ? ? ? ?[[alternative HTML version deleted]] > > ______________________________________________ > R-help at r-project.org 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. >
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