Rev 25099 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
\name{sample}\alias{sample}\title{Random Samples and Permutations}\description{\code{sample} takes a sample of the specified size from the elementsof \code{x} using either with or without replacement.}\usage{sample(x, size, replace = FALSE, prob = NULL)}\arguments{\item{x}{Either a (numeric, complex, character or logical) vector ofmore than one element from which to choose, or a positive integer.}\item{size}{non-negative integer giving the number of items to choose.}\item{replace}{Should sampling be with replacement?}\item{prob}{A vector of probability weights for obtaining the elementsof the vector being sampled.}}\details{If \code{x} has length 1, sampling takes place from\code{1:x}. \emph{Note} that this convenience feature may lead toundesired behaviour when \code{x} is of varying length\code{sample(x)}. See the \code{resample()} example below.By default \code{size} is equal to \code{length(x)}so that \code{sample(x)} generates a random permutationof the elements of \code{x} (or \code{1:x}).The optional \code{prob} argument can be used to give a vectorof weights for obtaining the elements of the vector beingsampled. They need not sum to one, but they should be nonnegativeand not all zero.If \code{replace} is false, these probabilities are appliedsequentially, that is the probability of choosing the next item isproportional to the probabilities amongst the remaining items. The numberof nonzero weights must be at least \code{size} in this case.}\references{Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988)\emph{The New S Language}.Wadsworth \& Brooks/Cole.}\examples{x <- 1:12# a random permutationsample(x)# bootstrap sampling -- only if length(x) > 1 !sample(x,replace=TRUE)# 100 Bernoulli trialssample(c(0,1), 100, replace = TRUE)## More careful bootstrapping -- Consider this when using sample()## programmatically (i.e., in your function or simulation)!# sample()'s surprise -- examplex <- 1:10sample(x[x > 8]) # length 2sample(x[x > 9]) # oops -- length 10!try(sample(x[x > 10]))# error!## This is safer:resample <- function(x, size, ...)if(length(x) <= 1) { if(!missing(size) && size == 0) x[FALSE] else x} else sample(x, size, ...)resample(x[x > 8])# length 2resample(x[x > 9])# length 1resample(x[x > 10])# length 0}\keyword{distribution}