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.