From clausen at econ.upenn.edu  Tue Mar 23 13:04:12 2010
From: clausen at econ.upenn.edu (Andrew Clausen)
Date: Tue, 23 Mar 2010 08:04:12 -0400
Subject: [Rd] [patch] add is.set parameter to sample()
In-Reply-To: <57a6d2111003221953g69797112o7dd109a280944fad@mail.gmail.com>
References: <57a6d2111003221953g69797112o7dd109a280944fad@mail.gmail.com>
Message-ID: <57a6d2111003230504t61cc96eal48e5d2a7b4400f9f@mail.gmail.com>

Hi all,

I forgot to test my patch!  I fixed a few bugs.

Cheers,
Andrew

On 22 March 2010 22:53, Andrew Clausen <clausen at econ.upenn.edu> wrote:
> Hi all,
>
> sample() has some well-documented undesirable behaviour.
>
> sample(1:6, 1)
> sample(2:6, 1)
> ...
> sample(5:6, 1)
>
> do what you expect, but
>
> sample(6:6, 1)
> sample(1:6, 1)
>
> do the same thing.
>
> This behaviour is documented:
>
> ? ? If 'x' has length 1, is numeric (in the sense of 'is.numeric') and
> ? ? 'x >= 1', sampling _via_ 'sample' takes place from '1:x'. ?_Note_
> ? ? that this convenience feature may lead to undesired behaviour when
> ? ? 'x' is of varying length 'sample(x)'. ?See the 'resample()'
> ? ? example below.
>
> My proposal is to add an extra parameter is.set to sample() to control
> this behaviour. ?If the parameter is unspecified, then we keep the old
> behaviour for compatibility. ?If it is TRUE, then we treat the first
> parameter x as a set. ?If it is FALSE, then we treat it as a set size.
> ?This means that
>
> sample(6:6, 1, is.set=TRUE)
>
> would return 6 with probability 1.
>
> I have attached a patch to implement this new option.
>
> Cheers,
> Andrew
>


[Rd] [patch] add is.set parameter to sample()
Andrew Clausen