Почему мой оператор if else завершается неудачно в сочетании с функцией примера в R - PullRequest
0 голосов
/ 23 мая 2018

У меня есть два вектора, которые могут быть переменной длины.Я хочу ограничить, как я выбираю из одного, используя длину меньшего.В этом случае xy меньше, поэтому первая часть должна выполняться, а вторая должна игнорироваться, но когда я запускаю код, я получаю ошибку:

Ошибка в sample.int (length (x), size, replace, prob): нельзя взять выборку, большую, чем совокупность, когда 'replace = FALSE'. Дополнительно: Предупреждение: In if (xx> xy) {: условие имеет длину> 1 и только первый элементбудет использоваться

  xy<-c(1:5)
  xx<-c(1:10)

  if(xx > xy){
    father<-xy;
    mother<-sample(xx,length(xy), replace = FALSE)
  } else {
    mother<-xx;
    father<-sample(xy,length(xx), replace = FALSE)
  }

Ошибка имеет смысл сама по себе, если я запускаю эти строки с sample отдельно, но я думал, что кодировка if else должна предотвратить это.

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

В вашем операторе if вам нужно использовать длины, а не необработанные векторы:

if(length(xx) > length(xy)) {...}
0 голосов
/ 23 мая 2018

Просто измените условие if на

 if(length(xx) > length(xy))
...