[R] How do I sample "cases" within a matrix?

Olivier ETERRADOSSI olivier.eterradossi at ema.fr
Thu Apr 30 14:00:39 CEST 2009


Hi Silvia,
excuse me if I'm missing something but sampling the row numbers should make
it :

let M be your matrix, and spM a sample with n rows :
spM <- M[sample(seq(1,dim(M)[1],by=1), n),]

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--tp23296664p23314865.html
Sent from the R help mailing list archive at Nabble.com.



More information about the R-help mailing list