Assuming your values aren't always in such neat order, you could use something like:
valtoremove1 <- sample((1:nrow(m))[m[,1] < 8], 1) valtoremove2 <- sample((1:nrow(m))[m[,1] > 12], 1) Sarah On Tue, Dec 30, 2008 at 9:59 AM, Guillaume Chapron <carnivorescie...@gmail.com> wrote: > Hello all, > > I create the following matrix: > > m <- matrix(1:20, nrow = 10, ncol = 2) > > which looks like: > > [,1] [,2] > [1,] 1 11 > [2,] 2 12 > [3,] 3 13 > [4,] 4 14 > [5,] 5 15 > [6,] 6 16 > [7,] 7 17 > [8,] 8 18 > [9,] 9 19 > [10,] 10 20 > > Then, I want to remove randomly 2 rows among the ones where m[,1]<8 and > m[,2]>12 > > I suppose the best way is to use the sample() function. I understand how to > do it when I remove among any rows, but I have not been able to do it when I > remove among specific rows only. What I could do is split the matrix into > two matrices, one with the rows to be sampled and removed, one with the > other rows. I would sample and remove, and then merge the two matrices > again. But since this part of the code is going to be done many times, I > would like to have it the most efficient possible without creating new > objects. Any idea? Thanks! > > Cheers > > Guillaume -- Sarah Goslee http://www.functionaldiversity.org ______________________________________________ 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.