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

Andrew Clausen clausen at econ.upenn.edu
Tue Mar 23 03:53:12 CET 2010

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.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: sample.diff
Type: text/x-patch
Size: 3636 bytes
Desc: not available
URL: <https://stat.ethz.ch/pipermail/r-devel/attachments/20100322/cc18f9ee/attachment.bin>

More information about the R-devel mailing list