當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。