On 20-07-2010, at 20:30, litao.ext [via R] wrote:

> yes, the matrix is symmetric. 
> 
> But when I apply normalize upon rows, I expect to get the following result: 
> > apply( a, 1, normalize ) 
>      [,1] [,2] [,3] [,4] [,5] 
> [1,] 0.00 0.25 0.50 0.75 1.00 
> [2,] 0.00 0.25 0.50 0.75 1.00 
> [3,] 0.00 0.25 0.50 0.75 1.00 
> [4,] 0.00 0.25 0.50 0.75 1.00 
> [5,] 0.00 0.25 0.50 0.75 1.00 
> 
> Actually we can get asymmetric matrix like: 
> > a = c(1:5) %*% t(1:5) 
> > a 
>      [,1] [,2] [,3] [,4] [,5] 
> [1,]    5    4    3    2    1 
> [2,]   10    8    6    4    2 
> [3,]   15   12    9    6    3 
> [4,]   20   16   12    8    4 
> [5,]   25   20   15   10    5 
> 
> > apply(a, 2, normalize) 
>      [,1] [,2] [,3] [,4] [,5] 
> [1,] 0.00 0.00 0.00 0.00 0.00 
> [2,] 0.25 0.25 0.25 0.25 0.25 
> [3,] 0.50 0.50 0.50 0.50 0.50 
> [4,] 0.75 0.75 0.75 0.75 0.75 
> [5,] 1.00 1.00 1.00 1.00 1.00 
> > 
> > apply(a, 1, normalize) 
>      [,1] [,2] [,3] [,4] [,5] 
> [1,] 1.00 1.00 1.00 1.00 1.00 
> [2,] 0.75 0.75 0.75 0.75 0.75 
> [3,] 0.50 0.50 0.50 0.50 0.50 
> [4,] 0.25 0.25 0.25 0.25 0.25 
> [5,] 0.00 0.00 0.00 0.00 0.00 
> 
> the latter result is very strange. 

Try ?apply

You will see  that apply concatenates the result for each row in a single 
vector.
This results in the matrix you show.
You need to transpose the result of apply(a,1,..) if you want to get what you 
want.

/Berend


-- 
View this message in context: 
http://r.789695.n4.nabble.com/Problem-with-command-apply-tp2295845p2296047.html
Sent from the R help mailing list archive at Nabble.com.

        [[alternative HTML version deleted]]

______________________________________________
R-help@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.

Reply via email to