sample takes a sample of the specified size from the elements
x using either with or without replacement.
1 2 3
Either a vector of one or more elements from which to choose, or a positive integer. See ‘Details.’
a positive number, the number of items to choose from. See ‘Details.’
a non-negative integer giving the number of items to choose.
Should sampling be with replacement?
A vector of probability weights for obtaining the elements of the vector being sampled.
x has length 1, is numeric (in the sense of
x >= 1, sampling via
sample takes place from
1:x. Note that this
convenience feature may lead to undesired behaviour when
of varying length in calls such as
sample(x). See the examples.
x can be any R object for which
subsetting by integers make sense: S3 or S4 methods for these
operations will be dispatched as appropriate.
sample the default for
size is the number of items
inferred from the first argument, so that
sample(x) generates a
random permutation of the elements of
It is allowed to ask for
size = 0 samples with
n = 0 or
x, but otherwise
n > 0 or positive
length(x) is required.
Non-integer positive numerical values of
x will be
truncated to the next smallest integer, which has to be no larger than
prob argument can be used to give a vector of
weights for obtaining the elements of the vector being sampled. They
need not sum to one, but they should be non-negative and not all zero.
replace is true, Walker's alias method (Ripley, 1987) is
used when there are more than 200 reasonably probable values: this
gives results incompatible with those from R < 2.2.0.
replace is false, these probabilities are applied
sequentially, that is the probability of choosing the next item is
proportional to the weights amongst the remaining items. The number
of nonzero weights must be at least
size in this case.
sample.int is a bare interface in which both
size must be supplied as integers.
As from R 3.0.0,
n can be larger than the largest integer of
integer, up to the largest representable integer in type
double. Only uniform sampling is supported. Two
random numbers are used to ensure uniform sampling of large integers.
sample a vector of length
size with elements
drawn from either
x or from the integers
sample.int, an integer vector of length
1:n, or a double vector if
n >= 2^31.
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.
Ripley, B. D. (1987) Stochastic Simulation. Wiley.
RNG about random number generation.
CRAN package sampling for other methods of weighted sampling without replacement.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
x <- 1:12 # a random permutation sample(x) # bootstrap resampling -- only if length(x) > 1 ! sample(x, replace = TRUE) # 100 Bernoulli trials sample(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 -- example x <- 1:10 sample(x[x > 8]) # length 2 sample(x[x > 9]) # oops -- length 10! sample(x[x > 10]) # length 0 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 ## R 3.x.y only sample.int(1e10, 12, replace = TRUE) sample.int(1e10, 12) # not that there is much chance of duplicates