ID EN
Random & Distribution

sample

R Base 3.6.2

sample takes a sample of the specified size from the elements of x using either with or without replacement.

Syntax

R
sample(x, size, replace = FALSE, prob = NULL)<p></p><p>sample.int(n, size = n, replace = FALSE, prob = NULL,
           useHash = (!replace && is.null(prob) && size <= 2="" n="" &&=""> 1e7))</=></p>

Arguments

Parameter Description
x either a vector of one or more elements from which to choose, or a positive integer. See ‘Details.’
n a positive number, the number of items to choose from. See ‘Details.’
size a non-negative integer giving the number of items to choose.
replace should sampling be with replacement?
prob a vector of probability weights for obtaining the elements of the vector being sampled.
useHash logical indicating if the hash-version of the algorithm should be used. Can only be used for replace = FALSE, prob = NULL, and size <= n/2, and really should be used for large n, as useHash=FALSE will use memory proportional to n.

Return Value

For sample a vector of length size with elements drawn from either x or from the integers 1:x. For sample.int, an integer vector of length size with elements from 1:n, or a double vector if \(n \ge 2^{31}\).

Details

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 in calls such as sample(x). See the examples. Otherwise x can be any R object for which length and subsetting by integers make sense: S3 or S4 methods for these operations will be dispatched as appropriate. For 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 x (or 1:x). It is allowed to ask for size = 0 samples with n = 0 or a length-zero x, but otherwise n > 0 or positive length(x) is required. Non-integer positive numerical values of n or x will be truncated to the next smallest i

Examples

Example
R
# NOT RUN {
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

## safer version:
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
# }

See Also

RNGkind(sample.kind = ..) about random number generation notably the change of sample() results with R version 3.6.0. CRAN package sampling for other methods of weighted sampling without replacement.