R help:确定间隔,binning一个数字

时间:2012-04-20 21:52:36

标签: r for-loop if-statement intervals binning

我试图在我之前拥有的值向量内的相邻值之间定义的间隔之间“加”一些随机生成的数字。基本上,我有以下几点:

vectorA包含101个值,范围从101到0。 我生成一个名为x的随机数。现在我想看看它在属于的vectorA中彼此相邻的两个数字之间的哪个区间?最后,一旦找到了间隔,我就会返回这两个值。

我有if语句; { - 1}},在for循环下,所以if语句可以遍历vectorA的所有增量。

我想远离R的break方法,因为我需要获取实际的bin间隔值并使用它们来计算某些东西。

1 个答案:

答案 0 :(得分: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