2011-09-25 58 views
7

我有希望從採樣日期列表。有時樣本空間只是一個單一的日期,例如樣品( 「10/11/11」,1)。該日期存儲爲克隆氏病的對象,所以,當我在我的樣本空間只是一個日期(只有這樣)樣品將此視爲一個向量(1:日期)。示例文檔指出:使用樣品()與樣本空間大小= 1

If ‘x’ has length 1, is numeric (in the sense of ‘is.numeric’) and 
‘x >= 1’, sampling _via_ ‘sample’ takes place from ‘1:x’. _Note_ 
that this convenience feature may lead to undesired behaviour when 
‘x’ is of varying length in calls such as ‘sample(x)’. See the 
examples. 

但我沒有看到一種方法來禁用此功能。是否有解決方法或一種方法來治療長度的一個對象作爲數字停止嗎?

回答

12

sample文檔建議是:

resample <- function(x, ...) x[sample.int(length(x), ...)] 
+0

始終是明智的遵循專家。 –

+0

謝謝。添加到我的.Rprofile。 –

+0

非常好。而你sample.int'的'使用實際上使這個有點不是'sample'快上的任意長度> 1個矢量 –

4

我把它包在if聲明,或包裹它的另一個函數內。例如:

mysample <- 
function(x, size, replace=FALSE, prob=NULL) 
{ 
    if(length(x)==1) 
    return(rep(x, size)) 

    sample(x, size, replace, prob) 
}