2011-09-25 2 views
7

필자는 샘플링을 원하는 날짜 목록을 가지고 있습니다. 때로는 샘플 공간이 단지 하나의 날짜가됩니다. 샘플 ("10/11/11", 1). 날짜는 chron 객체로 저장되므로 샘플 공간에서 단 하나의 날짜 만 있으면 샘플이 벡터 (1 : date)로 처리됩니다. 샘플에 대한 설명서에서이를 지적합니다 :샘플 공간 크기 = 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) 
}