2011-09-25 5 views
7

サンプルの日付リストがあります。場合によっては、サンプル空間は単一の日付になることがあります。サンプル(「10/11/11」、1)。日付はchronオブジェクトとして格納されているので、サンプル空間内の1つの日付しか持たないときは、サンプルはこれをベクトル(1:日付)として扱います。サンプルのドキュメントではこれを指摘しています:サンプルスペースのサイズが1のsample()の使用

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. 

しかし、この機能を無効にする方法はありませんでした。回避策または長さ1のオブジェクトを数値として扱うのを止める方法はありますか?

答えて

12

sampleドキュメントはこのことをお勧めします。専門家に従って

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

は常に賢いです。 –

+0

ありがとうございます。私の.Rprofileに追加されました。 –

+0

非常に良い。そして、 'sample.int'を使用すると、実際には、これは' sample'よりも少し速くなります。 –

4

ifステートメントでラップするか、別の関数にラップします。たとえば:

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

    sample(x, size, replace, prob) 
} 
関連する問題