Если вы хотите использовать отрицательную индексацию, и индекс может выродиться до integer(0)
(например, индекс вычисляется из which
), добавьте большое значение «вне границы» к индексу.Удаление значения «вне пределов» не имеет побочного эффекта.
x <- 1:10
i <- integer(0)
x[-c(i, 11)] ## position 11 is "out-of-bound"
# [1] 1 2 3 4 5 6 7 8 9 10
Если вы не можете установить это значение «вне пределов», вот канонический выбор: 2 ^ 31
, потому что этозначение превысило диапазон представления 32-разрядного целого числа со знаком, но оно не равно Inf
.
Альтернативным способом является проверка if
для length(i)
.Например:
if (length(i)) x[-i] else x
Внимание: не используйте функцию ifelse
для этой цели.