从R中的人口中抽样固定数量的实例

时间:2012-12-20 14:37:00

标签: r

我有一个变量,其中包含一些在整个程序中都会发生变化的数字。

例如:

a<-c(1,2,4,6,5)

我想每次都采取固定数量的样本(3):

sample(a,3,replace=FALSE)

在某些情况下,它可能是&lt; 3在这种情况下,我收到以下错误:

Error in sample(a, 3, replace = FALSE, prob = c(weights)) : 
 cannot take a sample larger than the population when 'replace = FALSE'
> 

有没有办法进行抽样,如果一个&lt; 3比它需要的多? 例如,如果a = 2且样本大小应为3,那么它只需要2

2 个答案:

答案 0 :(得分:8)

sample(a, min(length(a), 3), replace=FALSE)

答案 1 :(得分:1)

您可以在抽样之前添加控件if声明,以检查a的长度并相应地调整my.size

> my.size <- 3
> a <- 1:3
> if (length(a) <= 3)  { 
>     my.size <- length(a)
>     message(paste("Sampling size was reduced to ", my.size, ".", sep = ""))
> }
Sampling size was reduced to 2.
> my.size
[1] 2
> sample(a, size = my.size, replace=FALSE)
[1] 1 2