Hi All, I'm trying to use the "sample" function within a loop where the vector being sampled from (the first argument in the function) will vary in length and composition. When the vector is down in size to containing only one element, I run into the "undesired behaviour" acknowledged in the ?sample help file. I don't want sample(10,1) to return a number from within 1:10, but rather I'd just want it to return 10 every time. Example): Actual:> sample(10,1)[1] 2> sample(10,1)[1] 9> sample(10,1)[1] 4 Desired:> sample(10,1)[1] 10> sample(10,1)[1] 10> sample(10,1)[1] 10 Perhaps sample is not the appropriate function. I dunno. Any thoughts? Regards, Jonathan
Try this: x <- 10 sample(x, 1, prob = c(rep(0, x - 1), 1)) On Thu, Jul 22, 2010 at 5:31 PM, Jon BR <jonsleepy@gmail.com> wrote:> Hi All, > I'm trying to use the "sample" function within a loop where the > vector being sampled from (the first argument in the function) will > vary in length and composition. When the vector is down in size to > containing only one element, I run into the "undesired behaviour" > acknowledged in the ?sample help file. I don't want sample(10,1) to > return a number from within 1:10, but rather I'd just want it to > return 10 every time. > > Example): > > > Actual: > > sample(10,1) > [1] 2 > > sample(10,1) > [1] 9 > > sample(10,1) > [1] 4 > > > Desired: > > sample(10,1) > [1] 10 > > sample(10,1) > [1] 10 > > sample(10,1) > [1] 10 > > > Perhaps sample is not the appropriate function. I dunno. Any thoughts? > > Regards, > Jonathan > > ______________________________________________ > R-help@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. >-- Henrique Dallazuanna Curitiba-Paraná-Brasil 25° 25' 40" S 49° 16' 22" O [[alternative HTML version deleted]]
Did you look at the examples in sample? # sample()'s surprise -- example x <- 1:10 sample(x[x > 8]) # length 2 sample(x[x > 9]) # oops -- length 10! sample(x[x > 10]) # length 0 ## For R >= 2.11.0 only resample <- function(x, ...) x[sample.int(length(x), ...)] resample(x[x > 8]) # length 2 resample(x[x > 9]) # length 1 resample(x[x > 10]) # length 0 Hadley On Thu, Jul 22, 2010 at 3:31 PM, Jon BR <jonsleepy at gmail.com> wrote:> Hi All, > ? ?I'm trying to use the "sample" function within a loop where the > vector being sampled from (the first argument in the function) will > vary in length and composition. ?When the vector is down in size to > containing only one element, I run into the "undesired behaviour" > acknowledged in the ?sample help file. ?I don't want sample(10,1) to > return a number from within 1:10, but rather I'd just want it to > return 10 every time. > > Example): > > > Actual: >> sample(10,1) > [1] 2 >> sample(10,1) > [1] 9 >> sample(10,1) > [1] 4 > > > Desired: >> sample(10,1) > [1] 10 >> sample(10,1) > [1] 10 >> sample(10,1) > [1] 10 > > > Perhaps sample is not the appropriate function. ?I dunno. ?Any thoughts? > > Regards, > Jonathan > > ______________________________________________ > R-help at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. >-- Assistant Professor / Dobelman Family Junior Chair Department of Statistics / Rice University http://had.co.nz/