2012-04-20 3 views
1

Я пытаюсь «выбить» некоторые случайно сгенерированные числа между интервалом, определенным между соседними значениями в векторе значений, которые я ранее имел. Поэтому, по существу, у меня есть следующее:R help: определить интервал, бининг числа

vectorA содержит 101 значение от 101 до 0. Я генерирую случайное число, называемое x. Теперь я хотел бы видеть, какой интервал между двумя числами, смежными друг с другом в vectorA, принадлежит ли он? Наконец, как только он нашел интервал, я возвращаю эти два значения.

У меня есть утверждение if; if (x < vectorA [k] | x> vectorA [k + 1]), в цикле for, поэтому оператор if может проходить через все приращения вектора A.

Я хочу держаться подальше от метода R's breaks, потому что мне нужно захватить фактические значения интервала bin и использовать их для вычисления чего-то.

Любые предложения были бы полезными.

Благодаря

+0

findInterval ...? –

ответ

2

Как Бен отметил, findInterval ваш друг.

vectorA должно быть отсортировано в порядке возрастания.

findRange <- function(x, v) { 
    i <- findInterval(x, v) 
    list(from=i, to=i+1L) 
} 

v <- seq(1, 100, 10) # Must be sorted in ascending order! 
x <- runif(10, 1, 100) 
findRange(x, v) 

Если vectorA сортируется высокого к низкому уровню, вы должны повернуть его вспять и изменить индексы:

iRev <- findInterval(x, rev(vectorA)) 
iLow <- length(vectorA) - iRev 
iHigh <- iLow + 1L