If you just want to shuffle the row around, this should do it. By limiting the number of samples, you can get a smaller matrix:
> pla<- c(10, 9, 6, 5, 3) #abundance of pla species > pol<- c(14, 10, 9, 4, 2) #abundance of pol species > m<-pla%*%t(pol) #matrix of interactions > m[sample(nrow(m)),] [,1] [,2] [,3] [,4] [,5] [1,] 126 90 81 36 18 [2,] 42 30 27 12 6 [3,] 70 50 45 20 10 [4,] 84 60 54 24 12 [5,] 140 100 90 40 20 > m [,1] [,2] [,3] [,4] [,5] [1,] 140 100 90 40 20 [2,] 126 90 81 36 18 [3,] 84 60 54 24 12 [4,] 70 50 45 20 10 [5,] 42 30 27 12 6 > On Wed, Apr 29, 2009 at 1:36 PM, Silvia Lomascolo <slomasc...@gmail.com> wrote: > > Hi R community, > I am trying to obtain a sample from a matrix but sample(my.matrix) doesn't > do what I need. I have a matrix of 1287 interactions between the species in > columns and the species in rows and I want to obtain a smaller matrix with > say, 800 interactions, that may or may not have the same number of columns > and/or rows (i.e., some interactions may not be retrieved in a smaller > sample). For example, my original mock matrix M is > > > [,1] [,2] [,3] [,4] [,5] > [1,] 140 100 90 40 20 > [2,] 126 90 81 36 18 > [3,] 84 60 54 24 12 > [4,] 70 50 45 20 10 > [5,] 42 30 27 12 6 > > The command sample(my.matrix) samples whole cells from my matrix, such that > if the interaction between species 1 and 1 is included in the sample, they > always show 140 interactions. But what I want is to sample "cases" within > each cell. My sample matrix S could have =<140 interactions between species > 1 and 1, =<100 between species 1 and 2, etc. Again, if some combination is > absent from the sample matrix, that's OK. > > Here's my code, in case it helps: > > pla<- c(10, 9, 6, 5, 3) #abundance of pla species > pol<- c(14, 10, 9, 4, 2) #abundance of pol species > m<-pla%*%t(pol) #matrix of interactions according to pla and pol abundance > m > [,1] [,2] [,3] [,4] [,5] > [1,] 140 100 90 40 20 > [2,] 126 90 81 36 18 > [3,] 84 60 54 24 12 > [4,] 70 50 45 20 10 > [5,] 42 30 27 12 6 > > sample(m) #doesn't give me what I want... > > I have searched the forum for an answer but all questions regarding sampling > from matrices refer to sampling whole rows or columns, not "cases" within a > matrix. > Thanks in advance for any help! Silvia. > -- > View this message in context: > http://www.nabble.com/How-do-I-sample-%22cases%22-within-a-matrix--tp23296664p23296664.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. > -- Jim Holtman Cincinnati, OH +1 513 646 9390 What is the problem that you are trying to solve? ______________________________________________ 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.