Levi Waldron
2009-Dec-16 15:09 UTC
[R] difference between the meaning of MARGIN in sweep() and apply()
For example, subtracting 1:2 from the rows of a two-column matrix:> t(apply(matrix(1:6,ncol=2),MARGIN=1,function(y) y - 1:2))[,1] [,2] [1,] 0 2 [2,] 1 3 [3,] 2 4> sweep(matrix(1:6,ncol=2),MARGIN=2,1:2,FUN="-")[,1] [,2] [1,] 0 2 [2,] 1 3 [3,] 2 4 Is there a logic to this difference, or is it just a quirk of the history of these functions? I found one discussion on this topic, but without what I thought was a very conclusive end: http://finzi.psych.upenn.edu/Rhelp08/2009-March/191930.html -- Levi Waldron post-doctoral fellow Jurisica Lab, Ontario Cancer Institute Division of Signaling Biology TMDT 9-304D 101 College Street Toronto, Ontario M5G 1L7 (416)581-7453 [[alternative HTML version deleted]]
Charles C. Berry
2009-Dec-16 18:04 UTC
[R] difference between the meaning of MARGIN in sweep() and apply()
On Wed, 16 Dec 2009, Levi Waldron wrote:> For example, subtracting 1:2 from the rows of a two-column matrix: > >> t(apply(matrix(1:6,ncol=2),MARGIN=1,function(y) y - 1:2)) > [,1] [,2] > [1,] 0 2 > [2,] 1 3 > [3,] 2 4 >> sweep(matrix(1:6,ncol=2),MARGIN=2,1:2,FUN="-") > [,1] [,2] > [1,] 0 2 > [2,] 1 3 > [3,] 2 4 > > Is there a logic to this difference, or is it just a quirk of the history of > these functions?Well sweep(mat,MARGIN, apply(mat,MARGIN, applyfun), sweepfun) does it for me.> mat <- matrix(1:6,ncol=2) > sweep( mat, 2, apply(mat, 2, mean),'-')[,1] [,2] [1,] -1 -1 [2,] 0 0 [3,] 1 1>Chuck> > I found one discussion on this topic, but without what I thought was a very > conclusive end: > > http://finzi.psych.upenn.edu/Rhelp08/2009-March/191930.html > > > -- > Levi Waldron > post-doctoral fellow > Jurisica Lab, Ontario Cancer Institute > Division of Signaling Biology > TMDT 9-304D > 101 College Street > Toronto, Ontario M5G 1L7 > (416)581-7453 > > [[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. >Charles C. Berry (858) 534-2098 Dept of Family/Preventive Medicine E mailto:cberry at tajo.ucsd.edu UC San Diego http://famprevmed.ucsd.edu/faculty/cberry/ La Jolla, San Diego 92093-0901