On Wed, 2011-11-16 at 14:55 -0800, Peter Ehlers wrote: > I must be missing something. What's wrong with > > t(apply(mat, 1, sample)) > > ?
Only missing that I am either[*] i) stupid, ii) being too clever, iii) down on my coffee intake for the day. G [*] delete as applicable any that don't apply. ;-) > Peter Ehlers > > On 2011-11-16 12:12, Gavin Simpson wrote: > > On Wed, 2011-11-16 at 14:29 -0500, R. Michael Weylandt wrote: > >> Suppose your matrix is called X. > >> > >> ? sample > >> X[sample(nrow(X)),] > > > > That will shuffle the rows at random, not permute within the rows. > > > > Here is an alternative, first using one of my packages (permute - > > shameful promotion ;-) !: > > > > mat<- matrix(sample(0:1, 100, replace = TRUE), ncol = 10) > > > > require(permute) > > perms<- shuffleSet(10, nset = 10) > > ## permute mat > > t(sapply(seq_len(nrow(perms)), > > function(i, perms, mat) mat[i, perms[i,]], > > mat = mat, perms = perms)) > > > > If you don't want to use permute, then you can do this via standard R > > functions > > > > perms<- t(replicate(nrow(mat), sample(ncol(mat)))) > > ## permute mat > > t(sapply(seq_len(nrow(perms)), > > function(i, perms, mat) mat[i, perms[i,]], > > mat = mat, perms = perms)) > > > > HTH > > > > G > > > >> Michael > >> > >> On Wed, Nov 16, 2011 at 11:45 AM, Juan Antonio Balbuena<balbu...@uv.es> > >> wrote: > >>> Hello > >>> This is probably a basic question but I am quite new to R. > >>> > >>> I need to permute elements within rows of a binary matrix, such as > >>> > >>> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] > >>> [1,] 0 0 0 0 1 0 0 0 0 0 > >>> [2,] 0 0 1 1 0 0 0 1 1 0 > >>> [3,] 0 1 0 0 0 0 1 0 0 0 > >>> [4,] 0 0 0 0 0 0 1 1 0 0 > >>> [5,] 0 0 0 1 0 0 0 0 1 0 > >>> [6,] 0 0 1 1 0 0 0 0 0 1 > >>> [7,] 0 0 0 0 0 0 0 0 0 0 > >>> [8,] 1 1 0 1 0 0 0 1 0 1 > >>> [9,] 1 0 0 1 0 1 0 1 0 0 > >>> [10,] 0 0 0 0 0 0 0 1 0 1 > >>> > >>> > >>> That is, elements within each row are permuted freely and independently > >>> from > >>> the other rows. > >>> > >>> I see that is is workable by creating a array for each row, performing > >>> sample and binding the arrays again, but I wonder whether there is a more > >>> efficient way of doing the trick. > >>> > >>> Any help will be much appreciated. > >>> > >>> > >>> > >>> -- > >>> View this message in context: > >>> http://r.789695.n4.nabble.com/permutation-within-rows-of-a-matrix-tp4076989p4076989.html > >>> Sent from the R help mailing list archive at Nabble.com. > >>> > >>> ______________________________________________ > >>> 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. > >>> > >> > >> ______________________________________________ > >> 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. > >> > > > > -- %~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~% Dr. Gavin Simpson [t] +44 (0)20 7679 0522 ECRC, UCL Geography, [f] +44 (0)20 7679 0565 Pearson Building, [e] gavin.simpsonATNOSPAMucl.ac.uk Gower Street, London [w] http://www.ucl.ac.uk/~ucfagls/ UK. WC1E 6BT. [w] http://www.freshwaters.org.uk %~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~% ______________________________________________ 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.