当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R sample 随机样本和排列


R语言 sample 位于 base 包(package)。

说明

sample 使用带替换或不带替换的方式从 x 的元素中获取指定大小的样本。

用法

sample(x, size, replace = FALSE, prob = NULL)

sample.int(n, size = n, replace = FALSE, prob = NULL,
           useHash = (n > 1e+07 && !replace && is.null(prob) && size <= n/2))

参数

x

一个或多个可供选择的元素的向量,或者一个正整数。查看具体信息。'

n

正数,可供选择的项目数。查看具体信息。'

size

一个非负整数,给出要选择的项目数。

replace

抽样是否应该放回?

prob

用于获取被采样向量的元素的概率权重向量。

useHash

logical 指示是否应使用算法的hash-version。只能用于 replace = FALSEprob = NULLsize <= n/2 ,并且确实应该用于大型 n ,因为 useHash=FALSE 将使用与 n 成比例的内存。

细节

如果 x 的长度为 1,是数字(在 is.numeric 的意义上)和 x >= 1 ,则通过 sample 进行采样从 1:x 开始。请注意,当 x 在诸如 sample(x) 等调用中长度不同时,此便利函数可能会导致不良行为。请参阅示例。

否则x可以是任何R对象为length并且按整数进行子集化是有意义的:将根据需要调度这些操作的 S3 或 S4 方法。

对于 samplesize 的默认值是从第一个参数推断的项目数,以便 sample(x) 生成 x (或 1:x )元素的随机排列。

允许要求带有 n = 0 或 length-zero xsize = 0 样本,但否则需要 n > 0 或正 length(x)

nx 的非整数正数值将被截断为下一个最小整数,该整数不得大于 .Machine$integer.max

可选的prob参数可用于给出权重向量,以获取被采样向量的元素。它们的总和不必为一,但应为非负数且不全为零。如果replace是真的,当有超过 200 个合理可能的值时,使用 Walker 的别名方法(Ripley,1987):这给出的结果与来自的结果不兼容R< 2.2.0。

如果replace为假,则这些概率按顺序应用,即选择下一个项目的概率与剩余项目的权重成正比。在这种情况下,非零权重的数量必须至少为size

sample.int 是一个裸接口,其中 nsize 都必须以整数形式提供。

参数 n 可以大于类型 integer 的最大整数,最大可达类型 double 中可表示的最大整数。仅支持均匀采样。使用两个随机数来确保大整数的均匀采样。

对于 sample ,长度为 size 的向量,其元素取自 x 或整数 1:x

对于 sample.int ,长度为 size 的整数向量,其中元素来自 1:n ,如果是 则为双向量。

例子

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.0.0 and later
sample.int(1e10, 12, replace = TRUE)
sample.int(1e10, 12) # not that there is much chance of duplicates

参考

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.

也可以看看

RNGkind(sample.kind = ..)关于随机数的生成,特别是sample()结果与R版本3.6.0。

CRAN 包 sampling 用于其他无需替换的加权采样方法。

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Random Samples and Permutations。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。