From gavin.simpson at ucl.ac.uk  Fri May 29 12:11:45 2009
From: gavin.simpson at ucl.ac.uk (Gavin Simpson)
Date: Fri, 29 May 2009 11:11:45 +0100
Subject: [Rd] Bug in base function sample ( ) (PR#13727)
In-Reply-To: <20090528073013.3C3D8282BE85@mail.pubhealth.ku.dk>
References: <20090528073013.3C3D8282BE85@mail.pubhealth.ku.dk>
Message-ID: <1243591905.2587.18.camel@desktop.localhost>

On Thu, 2009-05-28 at 09:30 +0200, chajewski at fordham.edu wrote:
> Full_Name: Michael Chajewski
> Version: 2.9.0
> OS: Windows XP
> Submission from: (NULL) (150.108.71.185)
> 
> 
> I was programming a routine which kept reducing the array from which a random
> sample was taken, resulting in a single number. I discovered that when R
> attempts to sample from an object with only one number it does not
> reproduce/report the number but instead chooses a random number between 1 and
> that number. 

This is working as documented/intended in ?sample. 'x' is of length 1,
so it is interpreted as 1:x (if x >=1), resulting in the behaviour you
have encountered.

That help page even goes so far as to warn you that this "convenience
feature may lead to undesired behaviour..." and gives an example
function (in Examples) that handles the sort of use case you have. See
the Examples section and the resample() function created there.

HTH

G

> 
> Example 1:
> 
> # I am assigning a single number
> gg <- 7
> # Creating an array to store sampled values
> ggtrack <- 0
> 
> # I am sampling 10,000 observations from my single value
> # object and storing them
> for (i in 1:10000) {
> 	g0 <- sample(gg, (i/i))
> 	ggtrack <- c(ggtrack,g0)
> }
> 
> # Deleting the initial value in the array
> ggtrack <- ggtrack[-1]
> 
> # The array ought to be 10,000 samples long (and it is)
> length(ggtrack)
> 
> # The array should contain 10,000 "7", but it does not
> # See the histogram of sampled values
> hist(ggtrack)
> 
> Example 2:
> 
> # Here is the same example, but now with
> # two number. Note that now the function performs
> # as expected and only samples between the two.
> 
> gg <- c(7,2)
> ggtrack <- 0
> for (i in 1:10000) {
> 	g0 <- sample(gg, (i/i))
> 	ggtrack <- c(ggtrack,g0)
> }
> 
> ggtrack <- ggtrack[-1]
> length(ggtrack)
> hist(ggtrack)
> 
> 
> Highest Regards,
> Michael Chajewski
> 
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
-- 
%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%
 Dr. Gavin Simpson             [t] +44 (0)20 7679 0522
 ECRC, UCL Geography,          [f] +44 (0)20 7679 0565
 Pearson Building,             [e] gavin.simpsonATNOSPAMucl.ac.uk
 Gower Street, London          [w] http://www.ucl.ac.uk/~ucfagls/
 UK. WC1E 6BT.                 [w] http://www.freshwaters.org.uk
%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: This is a digitally signed message part
URL: <https://stat.ethz.ch/pipermail/r-devel/attachments/20090529/b5830f54/attachment.bin>


[Rd] Bug in base function sample ( ) (PR#13727)
Gavin Simpson