# [R] Sampling with conditions

(Ted Harding) ted.harding at wlandres.net
Tue Nov 8 08:41:05 CET 2011

```[Correction below (I was writing too late at night ... ]

On 08-Nov-11 00:25:57, Ted Harding wrote:
> On 07-Nov-11 22:22:54, SarahJoyes wrote:
>> Hey everyone,
>> I am at best, an amateur user of R, but I am stuck on how
>> to set-up the following situation.
>> I am trying to select a random sample of numbers from 0 to 10
>> and insert them into the first column of a matrix (which will
>> used later in a loop).
>> However, I need to have those numbers add up to 10. How can
>> I set those conditions?
>> So far I have:
>> n<-matrix(0,nr=5,ncol=10)
>> for(i in 1:10){n[i,1]<-sample(0:10,1)}
>> How do I set-up the "BUT sum(n[i,1])=10"?
>> Thanks
>> SarahJ
>
> Sarah, your example is confusing because you have set up a
> matrix 'n' with 5 rows and 10 columns. But your loop cycles
> through 10 rows!
>
> However, assuming that your basic requirement is to sample
> 10 integers which add up to 10, consider rmultinom():
>
>   rmultinom(n=1,size=10,prob=(1:10)/10)
>   #      [,1]
>   # [1,]    1
>   # [2,]    0
>   # [3,]    2
>   # [4,]    0
>   # [5,]    1
>   # [6,]    1
>   # [7,]    2
>   # [8,]    0
>   # [9,]    1
>   #[10,]    2
>   rmultinom(n=1,size=10,prob=(1:10)/10)
>   #      [,1]
>   # [1,]    0
>   # [2,]    0
>   # [3,]    0
>   # [4,]    0
>   # [5,]    1
>   # [6,]    1
>   # [7,]    2
>   # [8,]    1
>   # [9,]    2
>   #[10,]    3
>
> This gives each integer in (0:10) equal chances of being
> in the sample. For unequal chances, vary 'prob'.
>
> Hoping this helps,
> Ted.

That should have read:

This gives a uniform distribution over the positions in
the sample vector for the sampled integers, so that all
permutations are equally likely. For a non-uniform
distribution, vary 'prob'.

Sorry,
Ted.

--------------------------------------------------------------------
E-Mail: (Ted Harding) <ted.harding at wlandres.net>
Fax-to-email: +44 (0)870 094 0861
Date: 08-Nov-11                                       Time: 07:40:51
------------------------------ XFMail ------------------------------

```