findInterval () com intervalos fechados à direita

O grandefindInterval() função em R usa subintervalos fechados à esquerda em suavec argumento, como mostrado em seus docs:

E sei <- findInterval(x,v), temosv[i[j]] <= x[j] < v[i[j] + 1]

Se eu quiser subintervalos de fechamento direito, quais são minhas opções? O melhor que eu tenho é o seguinte:

findInterval.rightClosed <- function(x, vec, ...) {
  fi <- findInterval(x, vec, ...)
  fi - (x==vec[fi])
}

Outro também funciona:

findInterval.rightClosed2 <- function(x, vec, ...) {
  length(vec) - findInterval(-x, -rev(vec), ...)
}

Aqui está um pequeno teste:

x <- c(3, 6, 7, 7, 29, 37, 52)
vec <- c(2, 5, 6, 35)
findInterval(x, vec)
# [1] 1 3 3 3 3 4 4
findInterval.rightClosed(x, vec)
# [1] 1 2 3 3 3 4 4
findInterval.rightClosed2(x, vec)
# [1] 1 2 3 3 3 4 4

Mas gostaria de ver outras soluções, se houver uma melhor. Por "melhor", quero dizer "de alguma forma mais satisfatória" ou "não se sente como um kludge" ou talvez até "mais eficiente". =)

(Note que há umrightmost.closed argumento parafindInterval(), mas é diferente - só se refere ao subintervalo final e tem um significado diferente.)

questionAnswers(3)

yourAnswerToTheQuestion