Hi again Silvia (last time... ?), now : do I understand : you want 1) to randomly select some intersections between rows and columns 2) randomly select a number of cases for each intersection (being <= the number of initial cases ?
if yes, here is my solution, using your example : # select intersections, put them in new matrix mm mm<-m[sample(seq(1,5,by=1),2),sample(seq(1,5,by=1),3)] # make a function that samples a number of cases foo<-function(x) sample(seq(1,x,by=1),1) # use mapply mmm<-matrix(mapply(mm,FUN=foo),dim(mm)[1],dim(mm)[2]) On my computer it seems to work... hope this really help, this time ! Regards. Olivier Silvia Lomascolo 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--tp23296664p23315500.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.