我有一个变量,其中包含一些在整个程序中都会发生变化的数字。
例如:
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
答案 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