R, похоже, превращает список длины 1 в скаляр.
Например:
d=1:3
a=1
b=2
remains = d[c(-a, -b)]
sample(remains, 6, replace=TRUE)
Это работает неправильно, потому что sample() рассматривает «остатки» как одно число, а не как список из 1 элемента. образец возвращает значения в диапазоне 1:3
если я изменю приведенный выше код так, чтобы «b = 1», тогда sample () вернется, как и ожидалось.
Как исправить этот код без добавления специального случая для length(remains)==1 ?
remains
в вашем коде, это вектор длины 1. - person John Coleman   schedule 22.01.2018?sample
; есть комментарий (и пример, представляющий более безопасную функциюresample
), который касается вашей проблемы. - person Maurits Evers   schedule 22.01.2018