Использование sample () с размером выборки = 1 - PullRequest
7 голосов
/ 25 сентября 2011

У меня есть список дат, с которых я хотел бы попробовать. Иногда пробным пространством будет просто одна дата, например Образец ( "10/11/11", 1). Даты хранятся в виде объектов chron, поэтому, когда в моем выборочном пространстве (и только после этого) у меня есть только одна дата, образец обрабатывает ее как вектор (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.

Но я не видел способа отключить эту функцию. Есть ли обходной путь или способ помешать ему рассматривать объекты длиной один как числовые?

Ответы [ 2 ]

12 голосов
/ 25 сентября 2011

Документация sample рекомендует это:

resample <- function(x, ...) x[sample.int(length(x), ...)]
5 голосов
/ 25 сентября 2011

Я бы обернул его в оператор if или в другую функцию. Например:

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

  sample(x, size, replace, prob)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...