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

问题描述 投票:1回答:1

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

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

我有if语句; if (x < vectorA[k] | x > vectorA[k+1]),在for循环下,所以if语句可以遍历vectorA的所有增量。

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

r for-loop if-statement intervals binning
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.