我试图在我之前拥有的值向量内的相邻值之间定义的间隔之间“加”一些随机生成的数字。基本上,我有以下几点:
vectorA
包含101个值,范围从101到0。
我生成一个名为x的随机数。现在我想看看它在属于的vectorA中彼此相邻的两个数字之间的哪个区间?最后,一旦找到了间隔,我就会返回这两个值。
我有if语句; { - 1}},在for循环下,所以if语句可以遍历vectorA的所有增量。
我想远离R的break方法,因为我需要获取实际的bin间隔值并使用它们来计算某些东西。
答案 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