Encontre qual linha de intervalo em um quadro de dados em que cada elemento de um vetor pertence

Eu tenho um vetor de elementos numéricos e um quadro de dados com duas colunas que definem os pontos inicial e final dos intervalos. Cada linha no quadro de dados é um intervalo. Quero descobrir a qual intervalo cada elemento do vetor pertence.

Aqui estão alguns dados de exemplo:

# Find which interval that each element of the vector belongs in

    library(tidyverse)
    elements <- c(0.1, 0.2, 0.5, 0.9, 1.1, 1.9, 2.1)

    intervals <-  frame_data(~phase, ~start, ~end,
                               "a",     0,     0.5,
                               "b",     1,     1.9,
                               "c",     2,     2.5)

O mesmo exemplo de dados para aqueles que se opõem ao tidyverse:

elements <- c(0.1, 0.2, 0.5, 0.9, 1.1, 1.9, 2.1)

intervals <- structure(list(phase = c("a", "b", "c"), 
                            start = c(0, 1, 2), 
                            end = c(0.5, 1.9, 2.5)), 
                       .Names = c("phase", "start", "end"), 
                       row.names = c(NA, -3L), 
                       class = "data.frame")

Aqui está uma maneira de fazer isso:

    library(intrval) 
    phases_for_elements <- 
    map(elements, ~.x %[]% data.frame(intervals[, c('start', 'end')])) %>% 
      map(., ~unlist(intervals[.x, 'phase'])) 

Aqui está a saída:

    [[1]]
    phase 
      "a" 

    [[2]]
    phase 
      "a" 

    [[3]]
    phase 
      "a" 

    [[4]]
    character(0)

    [[5]]
    phase 
      "b" 

    [[6]]
    phase 
      "b" 

    [[7]]
    phase 
      "c" 

Mas estou procurando um método mais simples com menos digitação. eu tenho vistofindInterval em questões relacionadas, mas não tenho certeza de como posso usá-lo nessa situação.

questionAnswers(7)

yourAnswerToTheQuestion