# [R] Sampling a matrix with different probability distributions

Silvia Lomascolo slomascolo at gmail.com
Tue May 5 19:37:30 CEST 2009

```

Greg Snow-2 wrote:
>
> The sample function has a prob argument that can be used to sample with
> unequal probabilities.  It sounds like you can just pass in the species
> abundance vector to prob and it will do what you want.
>
> It might be that my question is even more basic than it sounds:  I have
> tried what you say, but I may just be writing it wrong as I get an error
> message.  I wrote:
>
> reduced.M <- matrix(table( factor( sample(rep(M.index,M),800), M.index
> prob=pla)),nr=5)
>
> but I get and error message saying that the prob argument is "unused"".  I
> have also tried prob=unif, or directly prob=c(10, 9, 6, 5, 3), but I get
> the same error message. Any hints as to how I am passing the prob argument
> wrong? This is probably too basic...
>
> Thanks, Silvia.
> --
> Gregory (Greg) L. Snow Ph.D.
> Statistical Data Center
> Intermountain Healthcare
> greg.snow at imail.org
> 801.408.8111
>
>
>> -----Original Message-----
>> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-
>> project.org] On Behalf Of Silvia Lomascolo
>> Sent: Tuesday, May 05, 2009 9:52 AM
>> To: r-help at r-project.org
>> Subject: [R] Sampling a matrix with different probability distributions
>>
>>
>> I need to sample a matrix according to different distributions, instead
>> of
>> just randomly.  Here is some code that will hopefully clarify what I
>> need:
>>
>> I have a matrix M of 1287 interactions between species in rows and
>> species
>> in columns, according to their abundance:
>>
>> 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 1287 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
>>
>> Thanks to help from people in this forum, I was able to randomly sample
>> 800
>> interactions from matrix M and obtain a subset of the interactions in a
>> smaller matrix called reduced.M:
>>
>> M.index <- 1:length(M)
>> reduced.M <- matrix(table( factor( sample(rep(M.index,M),800),
>> M.index)),nr=5)
>> reduced.M
>>
>>      [,1] [,2] [,3] [,4] [,5]
>> [1,]   77   62   56   25   15
>> [2,]   83   53   51   21   11
>> [3,]   57   34   28   18   10
>> [4,]   51   31   21   14    4
>> [5,]   27   21   19    6    5
>>
>> Now I need to sample again, not randomly, but according to different
>> distributions.  For example, I need to sample according to the
>> abundance of
>> species pla, (pla vector written above).  The result should be that I
>> sample
>> my first row more intensely than my second row, and the last row should
>> be
>> the least intensely sampled, in proportion to my row species abundance.
>> In
>> the same token, I want to sample with a uniform distribution as well.
>> How
>> do I do this?
>>
>> Thanks, as usual! Silvia.
>> --
>> View this message in context: http://www.nabble.com/Sampling-a-matrix-
>> with-different-probability-distributions-tp23390324p23390324.html
>> Sent from the R help mailing list archive at Nabble.com.
>>
>> ______________________________________________
>> R-help at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> guide.html
>> and provide commented, minimal, self-contained, reproducible code.
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>
>

--
View this message in context: http://www.nabble.com/Sampling-a-matrix-with-different-probability-distributions-tp23390324p23392352.html
Sent from the R help mailing list archive at Nabble.com.

```