From: Sarah Goslee <sarah.goslee_at_gmail.com>

Date: Tue, 01 Jun 2010 16:37:05 -0400

> apply(m, 1, sum)

[1] 12 17 24

*> apply(m, 2, sum)
*

[1] 12 17 24

> apply(m, 1, mean)

[1] 4.000000 5.666667 8.000000

> apply(m, 2, mean)

[1] 4.000000 5.666667 8.000000

*>
*

*>
*

*> m <- matrix(1:9, nrow=3)
*

> apply(m, 1, sum)

[1] 12 15 18

*> apply(m, 2, sum)
*

[1] 6 15 24

> apply(m, 1, mean)

[1] 4 5 6

> apply(m, 2, mean)

[1] 2 5 8

*>
*

Date: Tue, 01 Jun 2010 16:37:05 -0400

As far as I can tell, your code works perfectly. It's just that the mean of your rows is the same as the mean of your columns because the matrix is symmetric.

Compare these two examples (the first one is yours):

> m = matrix( c(1,4,7,4,5,8,7,8,9), nrow = 3 )

*> m
*

[,1] [,2] [,3]

[1,] 1 4 7 [2,] 4 5 8 [3,] 7 8 9

> apply(m, 1, sum)

[1] 12 17 24

[1] 12 17 24

> apply(m, 1, mean)

[1] 4.000000 5.666667 8.000000

> apply(m, 2, mean)

[1] 4.000000 5.666667 8.000000

> apply(m, 1, sum)

[1] 12 15 18

[1] 6 15 24

> apply(m, 1, mean)

[1] 4 5 6

> apply(m, 2, mean)

[1] 2 5 8

Henrique provides methods for doing the same thing without using apply(), which may be useful if this isn't a test case for solving a larger problem.

If your problem is something other than that, you'll need to explain more clearly.

Sarah

On Tue, Jun 1, 2010 at 3:21 PM, Joachim de Lezardiere
<joachim.lezard_at_gmail.com> wrote:

> Thank you Henrique,

*>
**>
**>
**> I still don’t understand why my code doesn’t work ? According to the
**> definition of apply function it should work no ?
**>
**>
**>
**> From: Henrique Dallazuanna [mailto:wwwhsd_at_gmail.com]
**> Sent: Tuesday, June 01, 2010 7:34 PM
**> To: Joachim de Lezardiere
**> Cc: r-help_at_r-project.org
**> Subject: Re: [R] Problem using apply
**>
**>
**>
**> The mean by col and by row are the same:
**>
**> colMeans(m) == rowMeans(m)
**>
**> So:
**>
**> m / rowMeans(m) # You don't need apply here
**> m / colMeans(m)
**>
**> On Tue, Jun 1, 2010 at 2:26 PM, Joachim de Lezardiere
**> <joachim.lezard_at_gmail.com> wrote:
**>
**> Hello ,
**>
**>
**>
**> I can not get apply function to do what I want when doing stuff on rows.
**> Let's say I want to divide the rows of matrix by their mean, the below show
**> you get the same result weather you use 1 or 2, i.e. same result for columns
**> than for means..:(
**>
**>
**>
**> Thanks a lot for the help,
**>
**>
**>
**>
**>
**>
**>
**> m = matrix( c(1,4,7,4,5,8,7,8,9), nrow = 3 )
**>
**>
**>
**> divideByMean = function( v ){
**>
**> return( v/mean(v))
**>
**> }
**>
**>
**>
**> rowMean = c( mean( m[1,]),mean( m[2,]),mean( m[3,]) )
**>
**> rowMean
**>
**>
**>
**> colMean = c( mean( m[,1]),mean( m[,2]),mean( m[,3]) )
**>
**> colMean
**>
**>
**>
**> m
**>
**> print("ByRow")
**>
**> apply( m, 1, divideByMean)
**>
**>
**>
**> print("ByCol")
**>
**> apply( m, 2, divideByMean)
**>
**>
**>
**>
**>
**>
**>
*

-- Sarah Goslee http://www.functionaldiversity.org ______________________________________________ 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.Received on Tue 01 Jun 2010 - 21:41:36 GMT

Archive maintained by Robert King, hosted by
the discipline of
statistics at the
University of Newcastle,
Australia.

Archive generated by hypermail 2.2.0, at Wed 02 Jun 2010 - 00:30:26 GMT.

*
Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help.
Please read the posting
guide before posting to the list.
*