R语言中sample函数
001、无放回抽样
> a <- 1:5 ## a为数值向量 > a [1] 1 2 3 4 5 > sample(a, 3) ## 从a中任意抽取3个 [1] 3 1 2 > sample(a, 3) ## 从a中任意抽取3个 [1] 4 1 2
默认为无放回抽样,一个元素不能抽取两次, 除非本身就有重复的, 如下:
> a <- c(1, 1, 2, 2, 2, 3) ## 有重复元素 > a [1] 1 1 2 2 2 3 > sample(a, 3) [1] 1 1 2 > sample(a, 3) [1] 2 2 1
002、有放回抽样
> a <- 1:5 ## 数值向量 > a [1] 1 2 3 4 5 > sample(a, 8) ## 抽样次数多于元素个数报错。 Error in sample.int(length(x), size, replace, prob) : cannot take a sample larger than the population when 'replace = FALSE' > sample(a, 8, replace = T) ## 增加参数replace = T:有放回抽样 [1] 5 3 2 5 4 1 5 1 > sample(a, 8, replace = T) ## 可以观测到有的元素被重复抽到 [1] 3 4 5 1 1 2 5 4
003、增加元素被抽到的概率
> a <- 1:2 ## 数值向量 > a [1] 1 2 > sample(a, 5, replace = T, prob = c(0.8, 0.2)) ## 两个元素被抽到的概率分别是0.8和0.2 [1] 1 1 2 1 2 > sample(a, 5, replace = T, prob = c(0.8, 0.2)) [1] 1 1 1 1 2 > sample(a, 5, replace = T, prob = c(0.2, 0.8)) ## 两个元素被抽到的概率分别是0.2和0.8. [1] 1 2 1 1 2 > sample(a, 5, replace = T, prob = c(0.2, 0.8)) [1] 2 2 2 1 2